これら2つのコードの違いは何ですか:
public uint? a;
public uint a;
使用した場合の違いは何ですか?intまたはdoubleまたはその他の後
前もって感謝します
これら2つのコードの違いは何ですか:
public uint? a;
public uint a;
使用した場合の違いは何ですか?intまたはdoubleまたはその他の後
前もって感謝します
uint?
null許容型であり、たとえばnull値を保持できます。
uint? a;
uint b;
a = null;
b = null; //this will cause error
C#4.0では、 null合体演算子を使用して確認できます
b = a ?? 0;
それと同じ
if (a.HasValue)
b = a;
else
b = 0;
値型はオブジェクトではないため、null値を保持できません。と ?値型の周りに非表示のラッパーを使用することを指定し、それをnullにします。
int a = null // won't work
int? b = null // works
int?
へのショートカットNullable<int>
です。null値を保存できます。Nullable<T>
通常はnull値をサポートしない型にnull値を割り当てることができるジェネリック型です。
それで
int? a = null; //valid
int b = null; //invalid
//usage pattern
if (a.HasValue){
c = a.Value;
}
NullableMSDNドキュメントを参照してください
public uint? a is `nullable type` which is what the `?` operator means in this scenario.
public uint a; is an unsigned integer that requires a value.
Nullable型は、System.Nullable構造体のインスタンスです。null許容型は、基になる値型の通常の値の範囲に加えて、追加のnull値を表すことができます。たとえば、「Nullable of Int32」と発音されるNullableには、-2147483648から2147483647までの任意の値を割り当てることができます。または、null値を割り当てることができます。Nullableには、trueまたはfalse、またはnullの値を割り当てることができます。数値型とブール型にnullを割り当てる機能は、値が割り当てられていない可能性のある要素を含むデータベースやその他のデータ型を処理する場合に特に役立ちます。たとえば、データベースのブールフィールドには、trueまたはfalseの値を格納できます。または、未定義の場合もあります。
http://msdn.microsoft.com/en-us/library/1t3y8s4s(v=vs.80).aspx
追加する1つのこと:
public uint? a;
とまったく同じです
public Nullable<uint> a;
これ?
は単なる構文糖衣です。
ああ、そしてもう1つ頭に浮かぶのは、フレームワークがnull許容型を使用するオプションを提供しているからといって、考えずにそれらを使用する必要があるという意味ではありません。
それらを使用すると、コードにNullableのHasValue
チェックの呼び出しが散らばります。これは、と同じであり、x == null
改善可能な設計を示している可能性があります。
Nullablesが悪いと言っているのではありません。実際には、まったく逆です。ユースケースに完全に適合すると思われる場合は、ぜひ先に進んで使用してください。
そこにあるという理由だけでそれらを使用しないでください。お願いします?かなりお願いしますか?
public uint? a;
これはnull許容型です。null許容型は、基になる値型の正しい範囲の値と、追加のnull値を表すことができます。