que enum ejemplos define c# enums roslyn c#-7.3

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 { }