8

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

Type _nullableEnumType = typeof(Enum?);

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

Type _nullableDecimalType = typeof(decimal?);
4

1 回答 1

15

Enum不是枚举- 它是枚举的基类,并且是引用类型(即 a class)。这意味着这Enum?是非法的,因为Nullable<T>有一个限制T : struct,并且Enum不满足。

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

您可能还需要注意:

Enum x = {some value};

是一个装箱操作,所以你通常应该避免使用Enum作为参数等。

于 2012-06-13T13:17:10.083 回答