回答:
いいえ、null許容は構造体です。何が起こっているのですか?
int
for int?
、DateTime
for DateTime?
など)。HasValue
はプロパティです。)データ型の値を設定すると、構造体はHasValue
trueに変わります。
Nullable型はSystem.Nullable構造体のインスタンスです。
そして
NULL可能型は、NULLの値を割り当てることができる値型変数を表します。参照型に基づいてnull許容型を作成することはできません。(参照型は既にnull値をサポートしています。)
したがって、それらは参照型ではありません。
Null許容型は、値型でも参照型でもありません。これらは値型に似ていますが、参照型のプロパティがいくつかあります。
当然、null許容型はに設定できますnull
。さらに、null許容型は一般的なstruct
制約を満たすことができません。あなたがNULL可能タイプのボックス場合にも、HasValue
等しくfalse
、あなたが得ますnull
代わりに、箱入りNULL可能タイプのポインタを(同様の状況がアンボクシングで存在します)。
これらのプロパティにより、null許容型が非値型になりますが、これらも参照型ではありません。それらは独自の特殊なnull可能値型です。
null許容型を参照型にすることはできません。