C#では、私が書くと
int? x = null;
x += x ?? 1
これは次と同等であると思います。
int? x = null;
x = x + x ?? 1
したがって、最初の例では、2番目の例のようにx
が含ま1
れます。しかし、そうではなく、nullが含まれています。+ =演算子は、割り当てられていない場合、null許容型では機能しないようです。なぜこれが当てはまるのですか?
編集:指摘したように、それはnull + 1 = null
演算子の優先順位のためです。私の弁護では、MSDNのこの行はあいまいだと思います!:
事前定義された単項演算子と二項演算子、および値型に存在するユーザー定義演算子は、null許容型でも使用できます。これらの演算子は、 [いずれかの]オペランドがnullの場合、null値を生成します。それ以外の場合、オペレーターは含まれている値を使用して結果を計算します。