8

C# で次のようなことを行うにはどうすればよいでしょうか?

Type _nullableEnumType = typeof(Enum?);

より良い質問は、これができるのになぜそれができないのかということだと思います:

Type _nullableDecimalType = typeof(decimal?);
4

1 に答える 1

15

Enumは列挙型ではありません - 列挙型の基本クラスであり、参照型 (つまり a class) です。これは、 という制限があり、それを満たさないため、Enum?は違法であることを意味します。Nullable<T>T : structEnum

したがって、 を使用するかtypeof(Nullable<>).MakeGenericType(enumTypeKnownAtRuntime)、より簡単に、typeof(EnumTypeKnownAtCompileTime?)

次の点にも注意してください。

Enum x = {some value};

はボックス化操作Enumであるため、通常はパラメーターなどとして使用することは避けて

于 2012-06-13T13:17:10.083 に答える