2011-06-29 22 views

答えて

33

参照型は、オブジェクトインスタンスへの参照(ポインタのような)として格納されます。
nullは、オブジェクトのインスタンスを指していない参照を意味します。

値の型は、参照なしで値そのものとして格納されます。
したがって、nullの値のタイプ—の値のタイプは、定義ではに値が含まれています。

Nullable<T>は、値がないことを示すフラグを持つ値型です。これは、falseとなります。値はまだあります(HasValuefalseの場合はValuedefault(T))、HasValueフラグは値を無視するように指示します。
nullとは関係ありません。ただし、CLRはnullボックス化された値をNullable<T>HasValuefalseに自動的にアンボックスします。

+0

変数にnullを使用できるようにすることはできますか?オペレーター。たとえば、int? x = null; – Shekhar

+3

@シーカー:彼はそれを理解しています。それは 'null'とは何の関係もありません。 – SLaks

+0

説明をありがとう。 – Shekhar

0

「Int32」のような値の型は、32ビットの記憶域を使用して格納されます。正確には32ビットで表現される4,294,967,296の値があり、Int32は4,294,967,296の異なる値を保持することができます。 -2,147,483,648が有効なInt32値でない場合、それを使用して "null"を表すことは可能かもしれませんが、バイナリ表現がすべてゼロでないという事実は複雑になります。対照的に、参照型の可能なビットの組み合わせの数は、有効な有効な参照の数をはるかに超えているため、ビットの組み合わせを「null」にすることは困難です。

+0

あなたが説明していることへの参照(記事)はありますか?私はあなたが置いたアイデアについてまだ明確ではない。 – Marshal

関連する問題