web-dev-qa-db-ja.com

C#に|| =または&& =演算子がないのはなぜですか?

すべての論理演算子、シフト演算子、加法演算子、およびすべての乗法演算子に対して同等の割り当て演算子があります。

論理演算子が除外されたのはなぜですか?難しいのに、技術的な理由はありますか?

57
George Duckett

論理演算子が除外されたのはなぜですか?難しいのに、技術的な理由はありますか?

彼らはしませんでした。できるよ &=または|=または^= お望みならば。

bool b1 = false;
bool b2 = true;
b1 |= b2; // means b1 = b1 | b2

||および&&演算子は、率直に言って、少しばかげているため、複合形式はありません。どのような状況であなたは言いたいですか

b1 ||= b2;
b1 &&= b2;

左側が変わらなければ右側が評価されないように?実際にこの機能を使用する人はごくわずかのようですが、なぜそれを導入するのでしょうか。

複合演算子の詳細については、ここにある私の深刻な記事を参照してください。

http://blogs.msdn.com/b/ericlippert/archive/2011/03/29/compound-assignment-part-one.aspx

ここでフォローアップのエイプリルフールの記事:

http://blogs.msdn.com/b/ericlippert/archive/2011/04/01/compound-assignment-part-two.aspx

47
Eric Lippert

多分ただ使う

isAdmin = isAdmin || IsGroupAdmin()

実装には2つのバージョンa ||= b、またはa = a || bがある可能性があるため、a = b || aは少し混乱しているためと思われます。また、式の右辺が評価されない場合があるため、動作が異なります。

0
温靖寰