1. Boolescher Datentyp: bool
Wie wir schon gesehen haben, gibt es in C# einen sehr nützlichen Operator – if-else. Er führt einen Block aus, wenn die Bedingung in den Klammern wahr ist, und einen anderen Block, wenn die Bedingung falsch ist.
Damit man bequem mit Ausdrücken arbeiten kann, die entweder wahr oder falsch sind, wurde in C# ein spezieller Typ eingeführt – bool. Das Besondere daran: Variablen dieses Typs können nur zwei Werte annehmen: true (wahr) und false (falsch).
Andere Werte kann man einer bool-Variable nicht zuweisen. Der Compiler lässt das nicht zu.
Beispiele für Variablen vom Typ bool:
bool isAdult = true;
bool hasMoney = false;
Eine bool-Variable hat nur zwei Werte – true (wahr) und false (falsch). Das war's! Fast wie bei einem erfolgreichen Test – entweder "bestanden" oder "durchgefallen" (ups).
2. Vergleichsoperationen
Wozu braucht man so einen primitiven Typ? Die eigentliche Power von bool zeigt sich, wenn wir logische Ausdrücke bauen. Die entstehen meistens mit Vergleichsoperatoren.
| Operator | Bedeutung | Beispiel | Wert |
|---|---|---|---|
| == | Gleich | |
true oder false |
| != | Ungleich | |
true oder false |
| > | Größer | |
true oder false |
| < | Kleiner | |
true oder false |
| >= | Größer oder gleich | |
true oder false |
| <= | Kleiner oder gleich | |
true oder false |
Beispiel:
int age = 20;
bool isAdult = age >= 18; // true (20 größer oder gleich 18)
bool isTeenager = age >= 13 && age < 18; // false (20 ist nicht kleiner als 18)
bool isEven = age % 2 == 0; // true (20 ist ohne Rest durch 2 teilbar)
isAdult wird hier true, weil 20 wirklich ein "Erwachsenen"-Alter ist.
Wichtiger Punkt 1:
Operatoren, die aus zwei Zeichen bestehen, dürfen nicht getrennt werden.
a < = 10
speed > = max
age = = 18
time ! = 0
Wichtiger Punkt 2:
Achte darauf, dass es die Operatoren => und =< nicht gibt: Es gibt nur <= und >=. Wenn du a =< 3 schreibst, wird dein Code einfach nicht kompiliert.
Wichtiger Punkt 3:
In C# kannst du keinen Ausdruck wie 18 < age < 65 schreiben. Denn der Ausdruck 18 < age ergibt true oder false. Und true < 65 (verschiedene Typen) geht nicht. Zumindest nicht in C#.
3. Logische Operationen
Im C# kannst du den Ausdruck 18 < age < 65 nicht schreiben – das ist syntaktisch falsch und das Programm wird nicht kompiliert.
Aber du kannst es so schreiben:
(18 < age) UND (age < 65)
Natürlich steht da statt UND ein anderer logischer Operator, und genau darüber reden wir jetzt.
In C# gibt es drei logische Operatoren: AND (und), OR (oder) und NOT (nicht).
Gute Nachricht: Mit Klammern kannst du logische Ausdrücke beliebiger Komplexität bauen.
Schlechte Nachricht: Die C#-Entwickler haben sich entschieden, statt and, or und not die Zeichen aus C++ zu nehmen.
| Logischer Operator | Erwartung | Realität |
|---|---|---|
| UND (∧) | and | && |
| ODER (∨) | or | || |
| NICHT (¬) | not | ! |
Hier ein paar Beispiele für logische Operatoren in C#:
| Ausdruck | Übersetzung | Erklärung |
|---|---|---|
| (0 < a) && (a < 100) | (0 < a) and (a < 100) | (0 < a) UND (a < 100) |
| (!a) && (!b) | (not a) and (not b) | (NICHT a) UND (NICHT b) |
| !(!a || !b) | not((not a) or (not b)) | NICHT((NICHT a) ODER (NICHT b)) |
4. Wahrheitstabellen
Kurz zu den logischen Operationen.
Operator AND
Der Operator AND, auch UND, &&, Konjunktion oder logische Multiplikation genannt.
| Ausdruck | Ergebnis |
|---|---|
| true && true | true |
| true && false | false |
| false && true | false |
| false && false | false |
Mit anderen Worten: Das Ergebnis ist nur dann true (wahr), wenn beide Werte im Ausdruck true (wahr) sind. In allen anderen Fällen ist das Ergebnis false (falsch).
Operator OR
Der Operator OR, auch ODER, ||, Disjunktion oder logische Addition genannt.
| Ausdruck | Ergebnis |
|---|---|
| true || true | true |
| true || false | true |
| false || true | true |
| false || false | false |
Mit anderen Worten: Das Ergebnis ist true (wahr), wenn mindestens einer der Werte im Ausdruck true (wahr) ist. Nur wenn beide false sind, ist das Ergebnis false.
Operator NOT
Der Operator NOT, auch NICHT, !, Inversion genannt.
| Ausdruck | Ergebnis |
|---|---|
| ! true | false |
| ! false | true |
Wechselt true zu false und umgekehrt.
Nützliche Ausdrücke:
| Ausdruck | Ergebnis |
|---|---|
| m && !m | false |
| m || !m | true |
| !(a && b) | !a || !b |
| !(a || b) | !a && !b |
5. Beispiele für logische Operationen: and, or, not
Die "UND"-Operation, AND, wird mit && geschrieben
Das Ergebnis ist nur dann wahr, wenn beide Variablen wahr sind.
int age = 16;
bool hasTicket = true;
bool canAttend = age >= 14 && hasTicket; // true (16 ist größer als 14 UND Ticket ist da)
Wenn du mindestens 14 bist UND ein Ticket hast – komm rein!
Die "ODER"-Operation, OR, wird mit (||) geschrieben
Das Ergebnis ist wahr, wenn mindestens eine Bedingung wahr ist.
bool isAdmin = false;
bool isModerator = true;
bool canEdit = isAdmin || isModerator; // true (du darfst editieren, wenn wenigstens eins davon true ist)
Wenn du Admin ODER Moderator bist – bitte, drück die Buttons!
Die "NICHT"-Operation, NOT, wird mit (!) geschrieben
Der Inverter macht aus wahr falsch und umgekehrt.
bool isWeekend = false;
bool shouldGoToWork = !isWeekend; // true (wenn nicht Wochenende, arbeiten wir)
Wenn NICHT Wochenende ist – aufstehen!
Kombinieren: Bau dir Bedingungen so kompliziert wie du willst
Du kannst beliebig viele logische Operationen kombinieren (übertreib's aber nicht, sonst kommt sowas raus wie "wenn er nicht NICHT nicht NICHT Admin ist..."). Klammern kann (und sollte!) man für die Übersicht nutzen.
Beispiel:
int age = 17;
bool hasTicket = false;
bool isVip = true;
bool canGo = (age >= 18 && hasTicket) || isVip; // true, weil isVip = true
In diesem Beispiel gilt: Wenn jemand volljährig ist und ein Ticket hat, oder wenn er VIP ist – darf er rein. Wenn nicht VIP – dann nur, wenn erwachsen und mit Ticket.
GO TO FULL VERSION