0

short?ビジネス オブジェクトがデータ型を返しています。

この値を変数に入れるにはどうすればよいですか?

short? myShort = SomeBusinessObject.UserBlah;

あれは正しいですか?nullだと壊れますか?

4

8 に答える 8

4

そのとおりです。myShort を null 非許容の short に割り当てる場合にのみ心配する必要があります。その場合は、次のように HasValue を確認する必要があります。

short s = myShort.HasValue ? myShort.Value : (short) 0; // or some other short value
于 2009-04-29T20:18:41.493 に答える
4

それを変数に入れるには、myShort.HasValue を確認した後に myShort.Value を使用します。

于 2009-04-29T20:18:43.350 に答える
2

SomeBusinessObject が null になるのを実際に防ごうとしているのですか? その場合、null 許容型は役に立ちません。SomeBusinessObject が null かどうかを確認する必要があります。

UserBlah が short を返す場合、null になることはありません (short は null 許容型ではないため)。

于 2009-04-29T20:17:26.473 に答える
2

null 合体演算子を忘れないでください。

short myShort = SomeBusinessObject.UserBlah ?? 0;

SomeBusinessObject.UserBlah が null の場合、?? の右側に値を渡すだけです。そのため、デフォルトで何かを設定できます。

于 2009-04-29T20:22:26.883 に答える
1

はい、そうです。

于 2009-04-29T20:16:39.767 に答える
1

myShortnullビジネス オブジェクトが を返す場合はになりますnull

値型として直接参照することはできないmyShortので、これでOKです。

myShort.HasValueかどうかを確認myShortするために使用できますnull

値を取得するために使用myShort.Valueします。値が定義されていない場合、例外がスローされます。

GetValueOrDefault()何も定義されていない場合でも、値を取得するためにデフォルトを使用および渡すことができます( null)。この関数は、null 許容型が の場合に渡した値を返しますnull

于 2009-04-29T20:18:23.773 に答える
1

myShort は、UserBlah暗黙的に に変換可能でNullable<Int16>、null に設定されている場合にのみ null になります。この場合、 のメンバーにアクセスしようとしない限り壊れませんmyShort.Value

これを行うこともできます:

short defaultValue = 0;
short myShort      = SomeBusinessObject.UserBlah ?? defaultValue;
于 2009-04-29T20:18:33.117 に答える