如何获取Nullable类型<enum>?</enum>

时间:2012-06-13 13:14:32

标签: c#

如何在C#中执行以下操作?

Type _nullableEnumType = typeof(Enum?);

我想一个更好的问题是,当你能做到这一点时,为什么不能这样做:

Type _nullableDecimalType = typeof(decimal?);

1 个答案:

答案 0 :(得分:14)

Enum 不是枚举 - 它是枚举的基类,并且是引用类型(即class)。这意味着Enum?是非法的,因为Nullable<T>的限制为T : struct,而Enum不符合此限制。

所以:要么使用typeof(Nullable<>).MakeGenericType(enumTypeKnownAtRuntime),要么更简单地使用typeof(EnumTypeKnownAtCompileTime?)

您可能还需要注意:

Enum x = {some value};

是装箱操作 ,因此您通常应避免使用Enum作为参数等。

相关问题