値型をラップしてnullを格納できるNullable値型を持つことは可能です。 しかし、技術的な理由で値の型をnullにすることはできないか、理由は概念的なものに過ぎませんか?なぜ値型をnullにすることができないのですか
答えて
参照型は、オブジェクトインスタンスへの参照(ポインタのような)として格納されます。
null
は、オブジェクトのインスタンスを指していない参照を意味します。
値の型は、参照なしで値そのものとして格納されます。
したがって、null
の値のタイプ—の値のタイプは、定義ではに値が含まれています。
Nullable<T>
は、値がないことを示すフラグを持つ値型です。これは、false
となります。値はまだあります(HasValue
がfalse
の場合はValue
がdefault(T)
)、HasValue
フラグは値を無視するように指示します。
null
とは関係ありません。ただし、CLRはnull
ボックス化された値をNullable<T>
にHasValue
をfalse
に自動的にアンボックスします。
「Int32」のような値の型は、32ビットの記憶域を使用して格納されます。正確には32ビットで表現される4,294,967,296の値があり、Int32は4,294,967,296の異なる値を保持することができます。 -2,147,483,648が有効なInt32値でない場合、それを使用して "null"を表すことは可能かもしれませんが、バイナリ表現がすべてゼロでないという事実は複雑になります。対照的に、参照型の可能なビットの組み合わせの数は、有効な有効な参照の数をはるかに超えているため、ビットの組み合わせを「null」にすることは困難です。
あなたが説明していることへの参照(記事)はありますか?私はあなたが置いたアイデアについてまだ明確ではない。 – Marshal
- 1. SQL Serverがnull値を返すことができないのはなぜですか?
- 2. nullがデータ型の場合、nullの型の変数を割り当てることができないのはなぜですか?
- 3. ジェネリック型を値型にキャストできないのはなぜですか?
- 4. スカラでは、なぜ異なるデータ型でvar変数の値を変更することができない
- 5. ConcurrentDictionaryを使用するときに値としてnullを追加できないのはなぜですか?
- 6. 型付きのオプション引数の既定値がNullでないのはなぜですか?
- 7. パラメータ値がnullになるのはなぜですか?
- 8. なぜDuplicateRecordFieldsに型推論ができないのですか?
- 9. この場合、NULL値の型が等しくないのはなぜですか?
- 10. C#値がnullでない場合、なぜLinqがNullについてクラッシュするのですか?
- 11. なぜ変数に異なる型の値を割り当てることができますか?
- 12. なぜ値型を互いにキャストできたら、ある値型の辞書を別の値型の辞書にキャストできないのですか?
- 13. なぜ私は希望のC#多型でコンパクトにすることができないのですか?
- 14. nullがNullable <>型のインスタンスではないのはなぜですか?
- 15. なぜstructのこのリストでフィールドに値を割り当てることができないのですか?
- 16. なぜzscriptのJava String値をZKのjavascriptに渡すことができないのですか?ここ
- 17. 文字型の値に型がないのはなぜですか?
- 18. なぜこの行に入ることができないのですか?
- 19. ここでnull値を取得するのはなぜですか?
- 20. なぜC#ダウンキャストが常にnullになるのですか?だからここ
- 21. サブクラス型の変数に親クラスを割り当てることができないのはなぜですか?
- 22. DataGridViewRow.Cells [1] .Valueがnullでないときにnullを返すのはなぜですか?
- 23. ジャクソン - 変換を行うときにjoda.time.DateTimeフィールドのnull値を無視できないのはなぜですか?
- 24. なぜこの.hを含めることができないのですか?
- 25. なぜこのミニクラフトモッドを作ることができないのですか?
- 26. なぜこのネストループがNULL値を取得するのですか?
- 27. なぜJava session.getAttribute()の値がnullであるのですか?
- 28. なぜNull値がPHPに存在するはずですか?
- 29. なぜ@PathParamがnullではないのに、私のPathSegmentがnullですか?
- 30. なぜ自動的に関数の型を返すことができないのですか?
変数にnullを使用できるようにすることはできますか?オペレーター。たとえば、int? x = null; – Shekhar
@シーカー:彼はそれを理解しています。それは 'null'とは何の関係もありません。 – SLaks
説明をありがとう。 – Shekhar