ejemplos - enum to list c#
C#7.3 Restricción de Enum: ¿Por qué no puedo usar la enumeración nullable? (2)
Ahora que tenemos una restricción enum, ¿por qué el compilador no me permite escribir este código?
public static TResult? ToEnum<TResult>(this String value, TResult? defaultValue)
where TResult : Enum
{
return String.IsNullOrEmpty(value) ? defaultValue : (TResult?)Enum.Parse(typeof(TResult), value);
}
El compilador dice:
Error CS0453 El tipo ''TResult'' debe ser un tipo de valor que no admite nulos para usarlo como parámetro ''T'' en el tipo genérico o método ''Nullable''
Como System.Enum es una clase, no puede declarar una variable de tipo Nullable<Enum> (ya que Nullable<T> solo es posible si T es una struct ).
Así:
Enum? bob = null;
no se compilará, ni tampoco su código.
Esto es definitivamente extraño (ya que Enum mismo es una clase, pero un Enum específico que usted define en su código es una struct ) si no se ha encontrado antes, pero claramente es una class (no una struct ) según el docs y el código fuente.
Puede, pero debe agregar otra restricción: la restricción struct .
public static void DoSomething<T>(T? defaultValue) where T : struct, Enum
{
}