C#で3値演算子とnull合体演算子を試しているときに、式の右側で割り当てを使用できることを発見しました。たとえば、これは有効なC#コードです。
int? a = null;
int? b = null;
int? c = a ?? (b = 12);
int? d = a == 12 ? a : (b = 15);
不思議なことに、式の右側の割り当てはそれ自体の右側に評価されるだけでなく(つまり、ここの3行目はの12
ようなものではなく評価されますb = 12 => void
)、この割り当ても効果的に機能します。 1つのステートメントで2つの変数が割り当てられます。この代入の右側にある計算可能な式を、使用可能な変数とともに使用することもできます。
この振る舞いは私には非常に奇妙に思えます。 常に評価されるC++での比較ではif (a = 2)
なく、問題が発生したことを覚えています。これは、Basic/HaskellからC++に切り替えた後のよくある間違いです。if (a == 2)
true
文書化された機能ですか?名前はありますか?