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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top