你怎么能在C#中做类似的事情?
Type _nullableEnumType = typeof(Enum?);
Run Code Online (Sandbox Code Playgroud)
我想一个更好的问题是,当你能做到这一点时,为什么你不能这样做:
Type _nullableDecimalType = typeof(decimal?);
Run Code Online (Sandbox Code Playgroud)
Mar*_*ell 15
Enum是不是一个枚举 -它是基类为枚举,并且是参考型(即,class).这意味着这Enum?是非法的,因为Nullable<T>有限制T : struct,并且Enum不满足.
所以:要么使用typeof(Nullable<>).MakeGenericType(enumTypeKnownAtRuntime),要么更简单,typeof(EnumTypeKnownAtCompileTime?)
您可能还需要注意:
Enum x = {some value};
Run Code Online (Sandbox Code Playgroud)
是一个装箱操作,所以你通常应该避免使用Enum作为参数等.