Dot-Net
Nullable Enum 可空類型問題
我收到以下原始碼的以下編譯錯誤:
編譯錯誤:
無法確定條件表達式的類型,因為 ’’ 和 ‘MyEnum’ 之間沒有隱式轉換
原始碼
public enum MyEnum { Value1, Value2, Value3 } public class MyClass { public MyClass() {} public MyEnum? MyClassEnum { get; set; } } public class Main() { object x = new object(); MyClass mc = new MyClass() { MyClassEnum = Convert.IsDBNull(x) : null ? (MyEnum) Enum.Parse(typeof(MyEnum), x.ToString(), true) }; }如何解決此錯誤?
我認為您只需要將結果轉換為
Enum.ParsetoMyEnum?。至少可以為空的整數就是這種情況。例如:int? i; i = shouldBeNull ? null : (int?) 123;所以:
MyClassEnum = Convert.IsDBNull(x) ? null : (MyEnum?) Enum.Parse(typeof(MyEnum), x.ToString(), true)
您的程式碼中存在語法錯誤:’:’ 和 ‘?’ 的位置 必須交換:
MyClassEnum = Convert.IsDBNull(x) ? null : (MyEnum) Enum.Parse(typeof(MyEnum), x.ToString(), true)順便提一句:
據我所知,推薦的方法是使用名為“None”的列舉元素而不是 Nullable 列舉,例如:
public enum MyEnum { None, Value1, Value2, Value3 }和
MyClassEnum = Convert.IsDBNull(x) ? MyEnum.None : (MyEnum) Enum.Parse(typeof(MyEnum), x.ToString(), true);