C# 7.3 Enum constraint: Why can't I use the nullable enum?
You can, but you have to add another constraint: the struct
constraint.
public static void DoSomething<T>(T? defaultValue) where T : struct, Enum
{
}
Because System.Enum
is a class, you cannot declare a variable of type Nullable<Enum>
(since Nullable<T>
is only possible if T
is a struct
).
Thus:
Enum? bob = null;
won't compile, and neither will your code.
This is definitely strange (since Enum
itself is a class, but a specific Enum
that you define in your code is a struct
) if you haven't run into it before, but it is clearly a class
(not a struct
) as per the docs and the source code.