3

これら2つのコードの違いは何ですか:

public uint? a;
public uint a;

使用した場合の違いは何ですか?intまたはdoubleまたはその他の後

前もって感謝します

4

6 に答える 6

10

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;
于 2012-06-26T11:23:48.520 に答える
5

値型はオブジェクトではないため、null値を保持できません。と ?値型の周りに非表示のラッパーを使用することを指定し、それをnullにします。

int a = null  // won't work
int? b = null // works
于 2012-06-26T11:26:17.607 に答える
4

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ドキュメントを参照してください

于 2012-06-26T11:27:40.400 に答える
3
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

于 2012-06-26T11:25:44.033 に答える
3

追加する1つのこと:

public uint? a;

とまったく同じです

public Nullable<uint> a;

これ?は単なる構文糖衣です。

ああ、そしてもう1つ頭に浮かぶのは、フレームワークがnull許容型を使用するオプションを提供しているからといって、考えずにそれらを使用する必要があるという意味ではありません。

それらを使用すると、コードにNullableのHasValueチェックの呼び出しが散らばります。これは、と同じであり、x == null改善可能な設計を示している可能性があります。

Nullablesが悪いと言っているのではありません。実際には、まったく逆です。ユースケースに完全に適合すると思われる場合は、ぜひ先に進んで使用してください。

そこにあるという理由だけでそれらを使用しないでください。お願いします?かなりお願いしますか?

于 2012-06-26T11:35:02.927 に答える
2

public uint? a;これはnull許容型です。null許容型は、基になる値型の正しい範囲の値と、追加のnull値を表すことができます。

于 2012-06-26T11:25:28.630 に答える