回答:
これは、問題の値の型がnull許容型であることを意味します
Nullable型はSystem.Nullable構造体のインスタンスです。null許容型は、基になる値型の正しい範囲の値と、追加のnull値を表すことができます。たとえば、
Nullable<Int32>
「Nullable of Int32」と発音されるには 、-2147483648〜2147483647の任意の値を割り当てることができます。または、null値を割り当てることができます。AにNullable<bool>
は、true、false、またはnullの値を割り当てることができます。数値型およびブール型にnullを割り当てる機能は、値が割り当てられない可能性のある要素を含むデータベースやその他のデータ型を扱う場合に特に役立ちます。たとえば、データベースのブールフィールドには、trueまたはfalseの値を格納できます。また、未定義の場合もあります。class NullableExample { static void Main() { int? num = null; // Is the HasValue property true? if (num.HasValue) { System.Console.WriteLine("num = " + num.Value); } else { System.Console.WriteLine("num = Null"); } // y is set to zero int y = num.GetValueOrDefault(); // num.Value throws an InvalidOperationException if num.HasValue is false try { y = num.Value; } catch (System.InvalidOperationException e) { System.Console.WriteLine(e.Message); } } }
int
型と対応するInteger
クラスがあるJavaを考えていると思います。
の略記ですNullable<int>
。Nullable<T>
値タイプをに設定できるようにするために使用されnull
ます。通常、値の型をnullにすることはできません。
value types
null にできません。特に値を割り当てずにintまたはbool(値の型)を宣言した場合でも、値(それぞれ0とfalse)があります。それらはnullにはなりません。reference types
一方、オブジェクトやMyClassなどのUnassigned はnullになります。値の型と参照の型の違いについて調べたい場合があります。
に
x ? "yes" : "no"
?if文を宣言します。ここで:xはブール条件を表します。:の前の部分はthen文で、後の部分はelse文です。
たとえば、
int?
?null許容型を宣言し、その前の型がnull値を持つ可能性があることを意味します。
return value ? value : "isNull";
ないことを教えてくれstring value
ます。
Nullable型はSystem.Nullable構造体のインスタンスです。null許容型は、基になる値型の値の通常の範囲と、追加のnull値を表すことができます。たとえば、[
Nullable<Int32>
]は「Nullable of Int32」と発音され、-2147483648〜2147483647の任意の値を割り当てたり、null値を割り当てたりできます。[Nullable<bool>
]には、値trueまたはfalse、またはnullを割り当てることができます。数値型およびブール型にnullを割り当てる機能は、値が割り当てられない可能性のある要素を含むデータベースやその他のデータ型を扱う場合に特に役立ちます。たとえば、データベースのブールフィールドには、trueまたはfalseの値を格納できます。また、未定義の場合もあります。
型がnull可能であることを宣言します。
上記の答えに追加するために、ここにコードサンプルがあります
struct Test
{
int something;
}
struct NullableTest
{
int something;
}
class Example
{
public void Demo()
{
Test t = new Test();
t = null;
NullableTest? t2 = new NullableTest();
t2 = null;
}
}
これはコンパイルエラーになります:
エラー12 nullをnullにできない値型であるため、nullを 'Test'に変換できません
NullableTestにはコンパイルエラーがないことに注意してください。(t2の宣言の?に注意)
int?
はの省略形ですNullable<int>
。2つの形式は交換可能です。
Nullable<T>
あなたが値型で使用できることをオペレータであるT
ことが受け入れ作るためにはnull
。
あなたはそれを知っていない場合:値の型は、などの値受け入れるタイプですint
、bool
、char
などが...
値への参照を受け入れることはできません。参照タイプを明示的に受け入れるのではnull
なく、を割り当てると、コンパイル時にエラーが発生します。
なぜそれが必要なのですか?値型変数は、データベースから返された欠落した変数や未定義の変数など、うまく機能しないものから返されたnull参照を受け取ることがあるからです。
Microsoftのドキュメントは主題を十分にカバーしているので、読むことをお勧めします。