property operator net has .net c#-2.0 nullable

.net - operator - Nullable Enum pregunta de tipo nullable



public nullable int (3)

Obtengo el siguiente error de compilación con el siguiente código fuente:

Error de compilación:

El tipo de expresión condicional no se puede determinar porque no hay conversión implícita entre '''' y ''MyEnum''

Código fuente

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) }; }

¿Cómo puedo resolver este error?


¿Creo que solo deberás enviar el resultado a (MyEnum?) En lugar de a (MyEnum)?


Hay un error de sintaxis en su código: la posición de '':'' y ''?'' debe ser intercambiado:

MyClassEnum = Convert.IsDBNull(x) ? null : (MyEnum) Enum.Parse(typeof(MyEnum), x.ToString(), true)

Por cierto:

Hasta donde yo sé, la forma recomendada es usar un elemento enum llamado ''Ninguno'' en lugar de una enumeración Nullable, por ejemplo:

public enum MyEnum { None, Value1, Value2, Value3 }

y

MyClassEnum = Convert.IsDBNull(x) ? MyEnum.None : (MyEnum) Enum.Parse(typeof(MyEnum), x.ToString(), true);


Creo que solo debes Enum.Parse el resultado de Enum.Parse a MyEnum? . Este es el caso con Ints Nullable al menos. P.ej:

int? i; i = shouldBeNull ? null : (int?) 123;

Asi que:

MyClassEnum = Convert.IsDBNull(x) ? null : (MyEnum?) Enum.Parse(typeof(MyEnum), x.ToString(), true)