Operatoren
| Gruppe | Operatoren |
|---|---|
| Arithmetik | + - * / %, ++ -- |
| Vergleich | == != < > <= >= |
| Logik | && || ! (mit Kurzschluss), & | ^ (ohne) |
| Zuweisung | = += -= *= /= %= ??= |
| Bedingung | a ? b : c |
| Null | ?? (Ersatzwert), ?. (sicherer Zugriff), ??= |
| Bereich | .., ^ (Indexe von hinten) |
int a = 17, b = 5;
Console.WriteLine($"{a + b} {a / b} {a % b} {(double) a / b:F2}");
Console.WriteLine($"{a > b && b > 0} {a < b || b == 5} {!(a > b)}");
string status = a >= 18 ? "volljährig" : "minderjährig";
Console.WriteLine(status);
string? name = null;
Console.WriteLine(name ?? "Gast"); // Ersatzwert bei null
Console.WriteLine(name?.Length ?? 0); // sicherer Zugriff
name ??= "Standard"; // nur zuweisen, wenn null
Console.WriteLine(name);
var z = new[] { 10, 20, 30, 40, 50 };
Console.WriteLine($"{z[^1]} {z[^2]} {string.Join(",", z[1..4])} {string.Join(",", z[..2])}");22 3 2 3.40 True True False minderjährig Gast 0 Standard 50 40 20,30,40 10,20
if und switch
int punkte = 73;
if (punkte >= 90) Console.WriteLine("sehr gut");
else if (punkte >= 75) Console.WriteLine("gut");
else if (punkte >= 50) Console.WriteLine("bestanden");
else Console.WriteLine("nicht bestanden");
// switch-Ausdruck (modern): liefert einen Wert
string note = punkte switch
{
>= 90 => "1",
>= 75 => "2",
>= 60 => "3",
>= 50 => "4",
_ => "5", // _ = alles andere
};
Console.WriteLine(note);
int tag = 6;
string art = tag switch { 6 or 7 => "Wochenende", >= 1 and <= 5 => "Werktag", _ => "ungültig" };
Console.WriteLine(art);
switch (tag) // klassisches switch
{
case 1:
Console.WriteLine("Montag");
break;
case 6:
case 7:
Console.WriteLine("Wochenende");
break;
default:
Console.WriteLine("Mitte der Woche");
break;
}bestanden 3 Wochenende Wochenende
Im klassischen switch braucht jeder Fall ein break. Ein stilles Durchfallen wie in C gibt es nicht.
Schleifen
for (int i = 1; i <= 5; i++) Console.Write(i + " ");
Console.WriteLine();
int n = 1;
while (n < 100) n *= 2;
Console.WriteLine(n);
int versuche = 0;
do { versuche++; } while (versuche < 3);
Console.WriteLine(versuche);
foreach (var farbe in new[] { "rot", "grün", "blau" }) Console.Write(farbe + " ");
Console.WriteLine();
foreach (var (schluessel, wert) in new Dictionary<string, int> { ["a"] = 1, ["b"] = 2 })
Console.Write($"{schluessel}={wert} ");
Console.WriteLine();
for (int i = 1; i <= 10; i++)
{
if (i % 2 == 0) continue; // überspringen
if (i > 7) break; // abbrechen
Console.Write(i + " ");
}
Console.WriteLine();1 2 3 4 5 128 3 rot grün blau a=1 b=2 1 3 5 7
Klassiker
// FizzBuzz
for (int i = 1; i <= 15; i++)
Console.Write((i % 15 == 0 ? "FizzBuzz" : i % 3 == 0 ? "Fizz" : i % 5 == 0 ? "Buzz" : i.ToString()) + " ");
Console.WriteLine();
// Primzahlen bis 30
for (int zahl = 2; zahl <= 30; zahl++)
{
bool prim = true;
for (int t = 2; t * t <= zahl; t++) if (zahl % t == 0) { prim = false; break; }
if (prim) Console.Write(zahl + " ");
}
Console.WriteLine();
// Tabelle
for (int zeile = 1; zeile <= 3; zeile++)
{
for (int spalte = 1; spalte <= 5; spalte++) Console.Write($"{zeile * spalte,4}");
Console.WriteLine();
}1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 FizzBuzz 2 3 5 7 11 13 17 19 23 29 1 2 3 4 5 2 4 6 8 10 3 6 9 12 15
Merke
??,?.,??=gehen mitnullum;z[^1]undz[1..4]adressieren von hinten und Bereicheswitch-Ausdrücke mit=>und Mustern (>= 90,or,and,_) sind kompakt und vollständigforeachist die Standardschleife über Sammlungenbreak,continuewie in C; kein Durchfallen imswitch
Aufgabe
Schreibe einen switch-Ausdruck, der aus einer Monatsnummer die Zahl der Tage zurückgibt (Schaltjahr als zweiter Parameter).