2016-08-02 30 views
2

Dies ist eine sehr einfache Frage, aber ich möchte eine Klarstellung, um sicher zu sein.Bedeutet der 'oder'-Operator in C# "und/oder" oder "der eine oder andere"?

Nehmen Sie das folgende Beispiel:

if (FirstName == "Bert" || Surname == "Berterson") 

Ist die || (oder) Operator bedeutet, in diesem Fall:

A. "Wenn die Person Bert heißt und/oder hat den Nachnamen Berterson" (dh "Bert Berterson", "Bert Smith", "Gary Berterson" würde alle qualifizieren)

- oder -

B. "Wenn die Person hat entweder der Vorname Bert oder der Name Berterson aber nicht beide" (dh "Bert Berterson" würde nicht in Frage kommen, während "Sally Berterson" und " Bert Billhouse wird sich qualifizieren)

Vielen Dank für Ihre Zeit, ich hoffe, das macht Sinn und Entschuldigung für solch eine einfache Frage

Antwort

6

Der || Operator in C# ist ein inklusive OR das ist zu verwenden. Das bedeutet für Ihr Beispiel:

if (FirstName == "Bert" || Surname == "Berterson") 
  • wenn FirstName ist "Bert", der ganze Ausdruck ist true und der zweite Teil ist nicht einmal ausgewertet.

  • Wenn nicht "Bert" ist, wird der zweite Teil ausgewertet und das Ergebnis des gesamten Ausdrucks bestimmt.

Für eine exklusive OR (XOR) verwenden, um die ^ Betreiber:

if ((FirstName == "Bert")^(Surname == "Berterson")) 

Dieses nur true wäre, wenn genau ein der beiden Bedingungen true ist.

+0

Bei Booleschen Werten ist der XOR-Operator auch äquivalent zu '' =: dh 'A^B 'ist äquivalent zu' A = B', wenn '' A' und B! 'sind Booleans. Natürlich ist das fast immer weniger lesbar, was im Allgemeinen '^' zur besseren Wahl macht. – Kyle

2

"Oder" bedeutet logisch oder, das ist wahr, wenn mindestens eine der Aussagen wahr ist.

"xor" Um auszudrücken, würden Sie kurzgeschlossen^

0

Es ist das erste (wie in den meisten Programmiersprachen) - bedeutet eine logische oder. Der andere Operator, den Sie beschrieben haben, heißt xor (exklusiv oder), was durch den Operator C# ^ dargestellt wird.

Beachten Sie, dass || (und &&) "kurzgeschlossen" sind, was bedeutet, dass sie lazily bewerten. Wenn beispielsweise in a || ba zutrifft, überprüft C# b überhaupt nicht. Dies steht im Gegensatz zu dem bitweisen Operator |, der immer beide Operanden auswertet.

0

Es ist ein logisches ODER, das bedeutet, wenn entweder die erste Bedingung, die zweite Bedingung oder beide erfüllt sind, das Ergebnis wahr ist.

Aus der Dokumentation:

Die bedingte-OR-Operator (||) führt eine logische ODER seine Bool-Operanden. Wenn der erste Operand true ergibt, wird der zweite Operand nicht ausgewertet. Wenn der erste Operand als falsch ausgewertet wird, bestimmt der zweite Operator, ob der ODER-Ausdruck als Ganzes als wahr oder falsch ausgewertet wird.

https://msdn.microsoft.com/en-us/library/6373h346.aspx