10

以下はなぜ禁止されているのですか?

Nullable<Nullable<int>>

一方

struct MyNullable <T>
{


}

MyNullable<Nullable<int>> 

ではありません

4

5 に答える 5

14

sでは、null 非許容値型のみを使用できると思いますNullable。それNullable自体は null 許容であるため、この方法でのネストは禁止されています。

http://msdn.microsoft.com/en-us/library/kwxxazwb.aspxから

public Nullable(
    T value
)

タイプ: TA 値タイプ。

于 2009-03-01T17:10:52.517 に答える
3

CLRに組み込まれているNullable型のボックス化とアンボックス化が明示的にサポートされているため、Nullableは特別です。

に対してMSILbox命令を使用すると、結果としてNullable<T>実際にが得られます。nullボックス化されたときにnullを生成する他の値型はありません。

開梱には、同様の対称的なサポートがあります。

于 2009-03-01T17:45:58.733 に答える
2

The generic type parameter for Nullable must itself be a non-nullable type (i.e. value type). This is the C# compiler warning I get, and it would seem to make sense. Tell me, why would you want to do such a thing anyway? I personally can see no use, and little meaning to such a declaration even.

于 2009-03-01T17:12:11.763 に答える