Es ist kein Bit-Operator, wenn es um Boolesche Operatoren angewendet wird.
Es ist das gleiche wie:
someBoolean = someBoolean & someString.ToUpperInvariant().Equals("blah");
Sie sehen in der Regel die Abkürzung und Betreiber &&
, sondern der Betreiber &
ist auch ein und Bediener, wenn auf booleans angewendet wird, nur, dass es nicht die kurz- tun Schnittbit.
Sie können stattdessen den Operator &&
verwenden (aber es gibt keinen Operator &&=
), um möglicherweise einige Berechnungen zu speichern. Wenn die someBoolean
false
enthält, wird der zweite Operand nicht ausgewertet werden:
someBoolean = someBoolean && someString.ToUpperInvariant().Equals("blah");
In Ihrem speziellen Fall wird die Variable auf true
auf der Linie setzen, bevor, so dass der Betrieb und ist vollständig unneccesary. Sie können den Ausdruck einfach auswerten und der Variablen zuweisen. Auch anstelle der Zeichenfolge zu konvertieren und dann zu vergleichen, sollten Sie einen Vergleich verwenden, die die Art und Weise behandelt Sie wollen, dass es im Vergleich:
bool someBoolean =
"blah".Equals(someString, StringComparison.InvariantCultureIgnoreCase);
Ich halte diesen Code eher hässlich. Es ist kürzer, aber es scheint mir ein bisschen missbräuchlich zu sein, ein bitweises zu verwenden und wenn Sie wirklich eine logische und. Beachten Sie auch, dass logisch und unterstützt Kurzschlüsse und damit vermeidet die Notwendigkeit zu berechnen 'someString.ToUpperInvariant(). Entspricht ("blah"); 'wenn' SomeBoolean' ist "wahr". – Brian
@Brian: Es ist kein bitweiser Operator, wenn er auf boolesche Werte angewendet wird. – Guffa
@Guffa: Ja, du hast Recht. [Das MSDN] (http://msdn.microsoft.com/en-us/library/sbf85k1c.aspx) gibt das explizit explizit an. Ich würde annehmen, dass der Standard das auch tut. – Brian