質問

    

この質問にはすでに回答があります:

         

C#コードでの ?? サインインについて疑問に思っていました。それは何のため?そして、どうすればそれを使用できますか?

int?はどうですか? nullable intですか?

参照:

  

?? Null Coalescing Operator—>合体とはどういう意味ですか?

役に立ちましたか?

解決

「null合体演算子」と呼ばれます。次のように動作します:

実行する代わりに:

int? number = null;
int result = number == null ? 0 : number;

次のことができるようになりました:

int result = number ?? 0;

他のヒント

null合体演算子 。 C#2で導入されました。

式の結果 a ?? b は、nullでない場合は a 、そうでない場合は b です。 b は、必要でない限り評価されません。

2つの素晴らしいこと:

  • 式の全体的な型は、第2オペランドの型です。これは、null許容値型を使用している場合に重要です。

    int? maybe = ...;
    int definitely = maybe ?? 10;
    

    (null不可の値型を第1オペランドとして使用できないことに注意してください。 無意味。)

  • 結合規則により、これを本当に簡単に連鎖させることができます。例:

    string address = shippingAddress ?? billingAddress ?? contactAddress;
    

これは、配送先住所、請求先住所、連絡先住所のうち最初のnull以外の値を使用します。

それは合体演算子です。基本的に、次の略記です

x ?? new Student();
x != null ? x : new Student();

オペレーターのMSDNドキュメント

これは新しいNull Coalesce演算子です。

??演算子は、nullでない場合は左側のオペランドを返し、そうでない場合は右側のオペランドを返します。

ここで読むことができます: http://msdn.microsoft.com/en-us/ library / ms173224(VS.80).aspx

次のショートカットです:

Text = (category == null ? "Home" : category);

これは合体演算子です。最初の値がnullの場合、別の値を返します

string value1 = null;
string value2 = "other";

string value3 = value1 ?? value2; // assigns "other" to value 3

categoryがnullであるかどうかをチェックします-この場合、null値は" Home"に置き換えられます。

null合体演算子の私のお気に入りの使用法の1つは、コード内のifステートメントを避けることです(ステートメントがくて、ほとんどの場合に混乱を招くと思います)。たとえば、利用可能な場合はキャッシュから何かをロードすることを選択し、そうでない場合はデータベースからロードしてキャッシュにデータを取り込む典型的なシナリオを考えます。

private SomeData GetData() {
    var data = HttpRuntime.Cache.Get("key") as SomeData;

    if (data == null) {
        data = DAL.GetData(some parameters...);
        HttpRuntime.Cache.Add("key", data, ....);
    }

    return data;
}

私にとって、それはいコードです。私は少し肛門かもしれませんが、代わりにこれにリファクタリングしないのはなぜですか?

private SomeData GetDataAndCache() {
    var data = DAL.GetData(some parameters...);
    HttpRuntime.Cache.Add("key", data, ....);
    return data;
}

private SomeData GetData() {
    var data = HttpRuntime.Cache.Get("key") as SomeData;
    return data ?? GetDataAndCache();
}

これはSRPにより厳密に準拠し、よりクリーンで読みやすいIMOです。関数は、明確に識別可能な1つの関数をそれぞれ正確に実行します。

カテゴリがnullの場合、テキストは「ホーム」になります

最初の非ヌル値を返します。便利。

??ヌル結合演算子

int?は、null可能なintです。つまり、通常のintとnullの値を持つことができます。 詳細については、こちらをご覧ください。

それが null-coalescing演算子です。 nullableタイプ(他のものと併用) 、申し訳ありません:)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top