short?ビジネス オブジェクトがデータ型を返しています。
この値を変数に入れるにはどうすればよいですか?
short? myShort = SomeBusinessObject.UserBlah;
あれは正しいですか?nullだと壊れますか?
そのとおりです。myShort を null 非許容の short に割り当てる場合にのみ心配する必要があります。その場合は、次のように HasValue を確認する必要があります。
short s = myShort.HasValue ? myShort.Value : (short) 0; // or some other short value
それを変数に入れるには、myShort.HasValue を確認した後に myShort.Value を使用します。
SomeBusinessObject が null になるのを実際に防ごうとしているのですか? その場合、null 許容型は役に立ちません。SomeBusinessObject が null かどうかを確認する必要があります。
UserBlah が short を返す場合、null になることはありません (short は null 許容型ではないため)。
null 合体演算子を忘れないでください。
short myShort = SomeBusinessObject.UserBlah ?? 0;
SomeBusinessObject.UserBlah が null の場合、?? の右側に値を渡すだけです。そのため、デフォルトで何かを設定できます。
はい、そうです。
myShortnullビジネス オブジェクトが を返す場合はになりますnull。
値型として直接参照することはできないmyShortので、これでOKです。
myShort.HasValueかどうかを確認myShortするために使用できますnull。
値を取得するために使用myShort.Valueします。値が定義されていない場合、例外がスローされます。
GetValueOrDefault()何も定義されていない場合でも、値を取得するためにデフォルトを使用および渡すことができます( null)。この関数は、null 許容型が の場合に渡した値を返しますnull。
myShort は、UserBlah暗黙的に に変換可能でNullable<Int16>、null に設定されている場合にのみ null になります。この場合、 のメンバーにアクセスしようとしない限り壊れませんmyShort.Value。
これを行うこともできます:
short defaultValue = 0;
short myShort = SomeBusinessObject.UserBlah ?? defaultValue;