2
我可能會錯過某些東西,但我得到了我認爲似乎是一個奇怪的錯誤,其他開發人員都沒有得到相同的代碼...奇怪的「使用可能未分配的字段'類型'」 - CS0170
public void SomeMethod(... symbolInfo)
{
ElementId elementId = symbolInfo.GetElementIds().Head(true);
if (elementId.HasValue())
{
// error here "Use of possibly unassigned field 'Type'"
object element = repository.FindElement(elementId.Type, elementId.Id);
if (element != null) { ... }
}
}
public struct ElementId
{
public string Id;
public MDAPI_ElementType Type;
}
用下面的擴展方法:
public static bool IsEmpty(this ElementId id)
{
return id.Type == ElementType.ElementUnknown || string.IsNullOrEmpty(id.Id);
}
public static bool HasValue(this ElementId id)
{
return !id.IsEmpty();
}
誰能告訴我爲什麼會不建?
'symbolInfo.GetElementIds()。Head(true)'如何創建'ElementId'? – ChrisF
@ChrisF:symbolInfo是一個COM對象,GetElementIds()是一個實例成員。我不是100%確定它在內部做什麼。頭部嘗試從IEnumerable中檢索第一個項目,但如果找不到一個,則返回默認(T)。將.Head(true)更改爲.ToList()[0]會導致相同的錯誤,所以我不認爲它的默認值(T)不幸。 –
Ian