Wird geladen...

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);
    }
}

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.

C# Konsolenanwendung: Warenkorb

Die Programmausgabe sieht aus wie im obigen Screenshot.