Warum gibt es nein || = oder && = Operatoren in C#?
-
27-10-2019 - |
Frage
Wir haben äquivalente Zuweisungsoperatoren für alle logischen Operatoren, Schichtbetreiber, additiven Operatoren und alle multiplikativen Operatoren.
Warum wurden die logischen Operatoren ausgelassen? Gibt es einen guten technischen Grund, warum es schwierig ist?
Lösung
Warum wurden die logischen Operatoren ausgelassen? Gibt es einen guten technischen Grund, warum es schwierig ist?
Sie haben es nicht getan. Du kannst tun &=
oder |=
oder ^=
falls Sie es wollen.
bool b1 = false;
bool b2 = true;
b1 |= b2; // means b1 = b1 | b2
Das ||
und &&
Die Bediener haben keine zusammengesetzte Form, weil sie ehrlich gesagt etwas albern sind. Unter welchen Umständen möchten Sie sagen
b1 ||= b2;
b1 &&= b2;
so dass sich die rechte Seite nicht bewertet, wenn sich die linke Seite nicht ändert? Es scheint, als würden nur wenige Leute diese Funktion tatsächlich verwenden. Warum also einfügen?
Weitere Informationen zu den zusammengesetzten Operatoren finden Sie in meinem ernsthaften Artikel hier:
http://blogs.msdn.com/b/ericlippert/archive/2011/03/29/compound-Ssignment-t-one.aspx
und der Follow-up-April-Fools-Artikel hier:
http://blogs.msdn.com/b/ericlippert/archive/2011/04/01/compound-Ssignment-two.aspx
Andere Tipps
Vielleicht nur benutzen
isAdmin = isAdmin || IsGroupAdmin()
Ich denke, es ist teilweise deshalb, weil a ||= b
ist irgendwie verwirrend, weil es möglicherweise zwei Versionen der Implementierung gibt: a = a || b
, oder a = b || a
. Und sie wirken anders, weil die rechte Seite des Ausdrucks manchmal nicht bewertet wird.