Operatoren und Ausdrücke in C#
Operatoren und Ausdrücke in C#: Verwendung von arithmetischen, Vergleichs-, logischen Operatoren, Inkrement-/Dekrement-, Ternary- und Null-Coalescing-Operatoren.
In C# sind Operatoren spezielle Symbole, die Operationen auf Variablen oder Werten ausführen. Mit diesen Symbolen können Sie mathematische Berechnungen durchführen, zwei Werte vergleichen, logische Bedingungen erstellen oder einer Variablen schnell einen Wert zuweisen. Strukturen, die durch die Kombination von Operatoren entstehen, nennt man Ausdrücke (Expressions). Ausdrücke sind die grundlegenden Bausteine, die den Programmablauf steuern und Ergebnisse liefern.
Zuweisungsoperator (=)
Wird verwendet, um einer Variablen einen Wert zuzuweisen.
int x = 5;
string nachricht = "Hallo";
x = 10;
Hier wird der Variable x vom Typ int der Wert 5 zugewiesen, und der Variable nachricht vom Typ string der Wert "Hallo". Später erhält x den Wert 10.
Arithmetische Operatoren
In C# werden arithmetische Operatoren verwendet, um numerische Berechnungen durchzuführen. Diese Operatoren führen grundlegende mathematische Operationen wie Addition, Subtraktion, Multiplikation, Division und Modulo (Rest) aus.
| Operator | Beschreibung | Beispiel (x=10, y=3) |
Ergebnis |
|---|---|---|---|
+ |
Addition | x + y |
13 |
- |
Subtraktion | x - y |
7 |
* |
Multiplikation | x * y |
30 |
/ |
Division | x / y |
3 |
% |
Modulo (Rest) | x % y |
1 |
Beispiel:
int a = 15;
int b = 4;
Console.WriteLine(a + b); // 19
Console.WriteLine(a / b); // 3
Console.WriteLine(a % b); // 3
Vergleichsoperatoren
Vergleichsoperatoren in C# werden verwendet, um zwei Werte miteinander zu vergleichen. Das Ergebnis ist immer vom Typ bool.
bool ist ein logischer Datentyp, der nur die Werte true (wahr) oder false (falsch) annehmen kann.
| Operator | Beschreibung | Beispiel (x=10, y=3) |
Ergebnis |
|---|---|---|---|
== |
Gleich | x == y |
false |
!= |
Ungleich | x != y |
true |
> |
Größer als | x > y |
true |
< |
Kleiner als | x < y |
false |
>= |
Größer oder gleich | x >= y |
true |
<= |
Kleiner oder gleich | x <= y |
false |
Beispiel:
int a = 7;
int b = 10;
bool ergebnis1 = (a < b); // true
bool ergebnis2 = (a == b); // false
Console.WriteLine(ergebnis1); // true
Console.WriteLine(ergebnis2); // false
Logische Operatoren
Werden verwendet, um Bedingungen zu kombinieren. Diese Bedingungen sind vom Typ bool. Sie führen die logischen Operationen und, oder, und nicht aus.
| Wert 1 | Wert 2 | && (und) | || (oder) |
|---|---|---|---|
true |
true |
true |
true |
true |
false |
false |
true |
false |
true |
false |
true |
false |
false |
false |
false |
Operatoren werden wie folgt verwendet:
| Operator | Beschreibung | Beispiel (a=true, b=false) |
Ergebnis |
|---|---|---|---|
&& |
und | a && b |
false |
|| |
oder | a || b |
true |
! |
nicht | !a |
false |
Zum Beispiel: Wenn die Variable x kleiner als 5 und die Variable y größer als 10 ist, lautet die Bedingung:
bool crit = x < 5 && y > 10;
Ein einfaches Beispiel: Wenn das Alter mindestens 18 ist und ein Führerschein vorhanden ist, darf der Benutzer Auto fahren:
using System;
class Program
{
static void Main()
{
Console.Write("Geben Sie Ihr Alter ein: ");
int alter = int.Parse(Console.ReadLine());
Console.Write("Haben Sie einen Führerschein? (Y/N): ");
string antwort = Console.ReadLine().ToUpper();
bool fuehrerschein = (antwort == "Y");
if (alter >= 18 && fuehrerschein)
{
Console.WriteLine("Sie dürfen Auto fahren.");
}
else
{
Console.WriteLine("Sie dürfen kein Auto fahren.");
}
}
}
Kombinierte Zuweisungsoperatoren
Kombinieren Zuweisung mit Arithmetik. Zum Beispiel eine Zahl um 5 erhöhen, 2 abziehen oder mit 6 multiplizieren.
| Operator | Beschreibung | Beispiel (x=10) |
Ergebnis |
|---|---|---|---|
+= |
addieren | x += 5 |
15 |
-= |
subtrahieren | x -= 2 |
8 |
*= |
multiplizieren | x *= 6 |
60 |
/= |
dividieren | x /= 2 |
5 |
%= |
Rest (Modulo) | x %= 2 |
0 |
Inkrement- und Dekrementoperatoren
Werden verwendet, um eine Zahl um 1 zu erhöhen oder zu verringern.
int x = 5;
x++; // 6
x--; // 5
Prefix vs. Postfix Unterschied:
int a = 5;
Console.WriteLine(++a); // 6 (erst erhöhen, dann ausgeben)
Console.WriteLine(a++); // 6 (erst ausgeben, dann erhöhen → a=7)
Ternary-Operator (?:)
Eine Kurzform von if-else. Wählt bedingt einen von zwei Werten.
using System;
class Program
{
static void Main()
{
Console.Write("Geben Sie eine Zahl ein: ");
int num = int.Parse(Console.ReadLine());
string ergebnis = (num % 2 == 0)
? "Die eingegebene Zahl ist gerade."
: "Die eingegebene Zahl ist ungerade.";
Console.WriteLine(ergebnis);
}
}
- Die Zahl wird mit
Console.ReadLine()eingelesen. - Mit
int.Parsevonstringinintumgewandelt. - Der Ternary-Operator (
?:) prüftnum % 2 == 0. - Die Ergebnisnachricht wird auf dem Bildschirm ausgegeben.
Null-Coalescing-Operatoren (?? und ??=)
In C# bedeutet null, dass eine Variable auf keinen Wert verweist. Mit anderen Worten: Die Variable ist definiert, enthält aber keinen Wert. Dies tritt häufig bei string- oder Klassenvariablen (Referenztypen) auf.
Manchmal möchten wir anstelle von null einen Standardwert zuweisen. Hier kommen die Null-Coalescing-Operatoren ins Spiel:
Beispiel 1: Verwendung von ??
string name = null;
string result = name ?? "Unbenannt";
Console.WriteLine(result);
Beispiel 2: Verwendung von ??=
string name = null;
name ??= "Unbekannt";
Console.WriteLine(name); // Unbekannt
Beispiel (Warenkorb)
using System;
using System.Globalization;
class Program
{
static void Main()
{
// Eingabekultur: Punkt/Komma-Probleme reduzieren
CultureInfo.CurrentCulture = CultureInfo.InvariantCulture;
// 1) Benutzereingaben nacheinander einlesen
Console.Write("Name (kann leer bleiben): ");
string name = Console.ReadLine();
name = string.IsNullOrWhiteSpace(name) ? null : name.Trim();
name ??= "Gast"; // (??=) Standardname zuweisen, wenn null
Console.Write("Stadt (kann leer bleiben): ");
string stadt = Console.ReadLine();
stadt = string.IsNullOrWhiteSpace(stadt) ? null : stadt.Trim();
string stadtInfo = stadt ?? "Unbekannte Stadt"; // (??) anzuzeigender Wert, wenn null
Console.Write("Warenkorb-Betrag (z. B. 749.90): ");
double warenkorb = double.Parse(Console.ReadLine());
Console.Write("Sind Sie Mitglied? (Y/N): ");
bool mitglied = Console.ReadLine().Trim().ToUpper() == "Y";
Console.Write("Gutscheincode (kann leer bleiben): ");
string gutschein = Console.ReadLine();
gutschein = string.IsNullOrWhiteSpace(gutschein) ? null : gutschein.Trim().ToUpper();
Console.Write("Expressversand gewünscht? (Y/N): ");
bool express = Console.ReadLine().Trim().ToUpper() == "Y";
// 2) Geschäftsregeln und Operatoren
// Arithmetik: MwSt., Rabatt, Versand, Gesamt
const double MwStSatz = 0.20; // 20% MwSt.
const double MitgliedRab1 = 0.05; // 5% bei Mitglied
const double MitgliedRab2 = 0.10; // 10% bei Mitglied und Warenkorb >= 500
const double GutscheinRab = 0.10; // +10% bei Gutschein "INDIRIM10"
const double MaxRabatt = 0.25; // Rabattdeckel 25%
const double VersandStandard = 19.90;
const double VersandExpress = 49.90;
const double VersandFreiSchwelle = 300.0;
// Vergleich + Logik: Rabatt bestimmen
double rabattSatz = mitglied && warenkorb >= 500
? MitgliedRab2
: (mitglied ? MitgliedRab1 : 0.0); // (?:) Ternary
// Logik: Gutscheinprüfung (ODER)
if (gutschein == "RABATT10" || gutschein == "KOD10")
rabattSatz += GutscheinRab; // Zusammengesetzte Zuweisung (+=)
// Deckel anwenden
rabattSatz = Math.Min(rabattSatz, MaxRabatt);
// Rabatt und MwSt. berechnen
double rabattBetrag = warenkorb * rabattSatz; // (*)
double zwischensumme = warenkorb - rabattBetrag; // (-)
double mwst = zwischensumme * MwStSatz; // (*)
// Versand: Express? sonst Freigrenze prüfen
double versand = express
? VersandExpress
: (zwischensumme >= VersandFreiSchwelle ? 0.0 : VersandStandard);
// Gesamtsumme
double gesamtsumme = zwischensumme + mwst; // (+)
gesamtsumme += versand; // Zusammengesetzte Zuweisung (+=)
// 3) Zusammenfassung
Console.WriteLine();
Console.WriteLine("— Zahlungsübersicht —");
Console.WriteLine($"Kunde : {name} ({stadtInfo})");
Console.WriteLine($"Warenkorb : {warenkorb:0.00} EUR");
Console.WriteLine($"Rabatt % : {(rabattSatz * 100):0}% (-{rabattBetrag:0.00} EUR");
Console.WriteLine($"Zwischensumme: {zwischensumme:0.00} EUR");
Console.WriteLine($"MwSt. (20%) : {mwst:0.00} EUR");
Console.WriteLine($"Versand : {versand:0.00} EUR {(express ? "(Express)" : "(Standard)")}");
Console.WriteLine($"Gesamtsumme : {gesamtsumme:0.00} EUR");
// Zusätzliches Logikbeispiel: Rechnungsnotiz
bool hoherWarenkorb = gesamtsumme >= 1000.0;
Console.WriteLine(hoherWarenkorb && mitglied
? "Hinweis: Für Ihre hochpreisige Bestellung haben Sie Extra-Punkte erhalten."
: "Hinweis: Mit einer Mitgliedschaft profitieren Sie von zusätzlichen Rabatten.");
}
}
Mit diesem Beispiel können Sie in Ihrer Konsolenanwendung eine Kombination der obigen Themen ausprobieren.
Die Programmausgabe sieht aus wie im obigen Screenshot.