2012-06-13 6 views
7

どのようにC#で次のようなことができますか?Nullableの型を取得する方法<Enum>?

Type _nullableEnumType = typeof(Enum?); 

私はあなたがこれを行うことができたときにそれを行うことができない理由より良い質問です推測:

Type _nullableDecimalType = typeof(decimal?); 
+1

このようなタイプは実際には存在しません。どのように使用する予定ですか? 'Enum'自体は参照型であり、値型ではありません。 –

答えて

14

Enum列挙ではありません - それは、列挙型の基底クラスです、参照型(すなわち、class)です。これは、Enum?が無効であることを意味します。Nullable<T>は、T : struct、およびEnumという制限を満たしていません。

ので:どちらかあなたはまた、それを注意することが必要かもしれませんtypeof(Nullable<>).MakeGenericType(enumTypeKnownAtRuntime)、または単により多く、typeof(EnumTypeKnownAtCompileTime?)

を使用する:あなたは通常Enumの使用を避ける必要がありますので

Enum x = {some value}; 

は、ボクシング操作ですパラメータなどとして入力します。

+0

うわー私はそれを逃した:) –

+0

偉大な説明マーク。ありがとう。 – devlife

関連する問題