Gibt es eine Zeit wenn && (AndAlso) egal ist & (Und)

8

Wenn ich zwei Variablen und nicht zwei Methodenanrufe evaluiere, spielt es eine Rolle, dass ich "& amp; & amp;" oder "& amp;"

%Vor%

Außerdem bezieht sich ein Buch, das ich für C # 3.0 / .NET 3.5 verwende, nur auf die & amp; & amp; Betreiber, ist der & amp; Betreiber weggehen?

    
Bobby Borszich 13.11.2008, 04:24
quelle

4 Antworten

3

Wie beobachtet wurde, ist & der bitweise UND-Operator. Die rohe Binärmathematik scheint im Laufe der Zeit immer weniger verbreitet zu sein, wobei immer mehr Entwickler die bitweise Arithmetik nicht wirklich verstehen. Was manchmal ein Schmerz sein kann.

Es gibt jedoch viele Aufgaben, die am besten mit solchen Aufgaben gelöst werden, insbesondere solche, die Daten als Flags betrachten. Der & -Operator ist 100% notwendig und wird nirgendwohin gehen - er wird einfach nicht so häufig benutzt wie der boolesche Kurzschlußoperator && .

Zum Beispiel:

%Vor%     
Marc Gravell 13.11.2008, 05:16
quelle
9

Verwenden Sie immer & amp; & amp; wenn Sie einen echten / falschen Logiktest durchführen. Ein einzelnes & amp; führt ein bisschen "und". Es funktioniert in einigen Fällen wie ein Logiktest, aber es ist nicht garantiert, dass es für alle Logikfälle funktioniert. Die häufigste Verwendung eines einzelnen & amp; ist beim Anwenden einer Bitmaske.

Beispiele (& amp; & amp; amp;):

%Vor%

Beispiel (& amp;):

%Vor%     
vfilby 13.11.2008 04:29
quelle
7

Wenn Sie ein einzelnes & amp; (Und) der zweite Teil des Ausdrucks wird ausgewertet. Dies könnte schlecht sein, wenn der zweite Teil davon ausgeht, dass der erste Teil wahr ist. Normalerweise verwenden Sie immer & amp; & amp; Der zweite Teil wird nicht ausgewertet, wenn der erste Teil falsch ist.

Logischerweise die Single & amp; tut eine bitweise Operation, wie andere gesagt haben, die immer noch für booleschen Vergleich / Bewertung gültig ist. Wirklich die einzige Zeit, eine einzelne & amp; (oder |) sollte verwendet werden (oder boolesche Auswertung), wenn die zweite Auswertung immer ausgeführt werden soll (wenn es sich um einen Funktionsaufruf / Modifikator handelt). Das ist schlechte Praxis durch und wahrscheinlich, warum das Buch es nicht erwähnt.

Einzelner & amp; sind nützlich bei Flag-Enums und Bitmasken.

Folgendes wirft eine Ausnahme von obj ist null:

%Vor%

Aber das wird funktionieren:

%Vor%

Das ist schlecht:

%Vor%

Der & amp; Betreiber ist hier zu bleiben.

    
Robert Wagner 13.11.2008 04:35
quelle
1

& amp; ist ein bitweiser Operator während & amp; & amp; ist der UND-Operator. Zwei völlig verschiedene Operationen.

%Vor%

EDIT: Hoppla ... dieses Beispiel funktioniert nicht in C #. Es sollte in C ++. Hoffentlich zeigt es die Absicht und den Unterschied zwischen den beiden Betreibern.

    
jpoh 13.11.2008 04:30
quelle

Tags und Links