Was bedeutet das "&=" in diesem C# code?
Stieß ich auf einige code, der wie folgt aussieht:
string someString;
...
bool someBoolean = true;
someBoolean &= someString.ToUpperInvariant().Equals("blah");
Warum sollte ich den bitweisen operator anstelle von "="?
- Ich denke, dass der code ziemlich hässlich. Es ist kürzer, aber es kommt mir ein bisschen missbräuchliche Verwendung einer bitweisen und-wenn Sie wirklich meinen, ein logisches und. Beachten Sie auch, dass logische und unterstützt kurzschließen und so vermeidet den Bedarf zu berechnen
someString.ToUpperInvariant().Equals("blah");
wennsomeBoolean
isttrue
. - Es ist nicht eine bitweise operator bei Anwendung auf Boolesche Werte.
- Ja, du hast Recht. MSDN ist eigentlich festgelegt, dass explizit. Ich würde davon ausgehen das standard-als auch nicht.
- Was bedeutet es, zu sagen "es ist nicht die bitweisen operator bei Anwendung auf Boolesche Werte?" Ist das nicht ein boolean nur 1 bit-Anzahl? Das ist, gibt es keine funktionalen Unterschiede zwischen einem 1-bit bitweise operation und eine logische Boolesche operation?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist nicht ein bitweiser operator, wenn es angewendet wird, um die booleschen Operatoren.
Es ist das gleiche wie:
Sie sehen in der Regel die kurz geschnitten und Betreiber
&&
, aber der Betreiber&
ist auch eines und-operators bei Anwendung auf Boolesche Werte, nur es nicht tun, die short-cut-bit.Können Sie die
&&
- operator statt (aber es gibt keine&&=
- operator), um möglicherweise sparen Sie einige Berechnungen. Wenn diesomeBoolean
enthältfalse
, der zweite operand wird nicht ausgewertet:In Ihrem speziellen Fall, wird die variable gesetzt ist
true
auf der Linie vor, so dass die Bedienung erfolgt komplett unneccesary. Sie können nur den Ausdruck auswerten und zuordnen der Variablen. Auch, anstelle der Konvertierung von der Zeichenfolge und dann vergleichen, sollten Sie einen Vergleich behandelt, wie Sie es wollen, im Vergleich:Es ist das äquivalent
+=
für die&
Betreiber.in diesem Fall, vor someBoolean wahr ist, bedeutet
Es ist die Abkürzung für:
Sehen MSDN (&= operator).
Es ist die Kurzform dieser:
Als Guffa hingewiesen, es gibt einen Unterschied zwischen & und &&. Ich würde nicht sagen, dass Sie können, sondern Sie verwenden SOLLTEN && statt & : & macht den code geeker, aber && macht den code besser lesbar... und performant. Das folgende Beispiel veranschaulicht :