🌱 Lehrpfad 1: C# 12 Essentials & Moderne Syntax

C# 04: Methoden, Out/Ref & Tupel

Lerne erweiterte Parameterübergaben in C#: out für Mehrfachrückgaben, ref für In-Place Mutationen und moderne leichtgewichtige (int, string) ValueTuples.

📂 Dateien dieser Lerneinheit:
📄 Aufgabe.cs (Startercode) 🧪 TestAufgabe.cs (Tests) 💡 Musterloesung.cs (Lösung) 📖 README.md

💡 1. Out/Ref Parameter & ValueTuples

C# bietet native Unterstützung für mehrere Rückgabewerte über leichtgewichtige Stack-basierte ValueTuples:

public class MathService {
    // 1. Rückgabe eines benannten ValueTuples:
    public (int Min, int Max, double Average) Analysiere(int[] werte) {
        int min = werte.Min();
        int max = werte.Max();
        double avg = werte.Average();
        return (min, max, avg);
    }

    // 2. Out-Parameter (Klassisches Try-Pattern):
    public bool VersucheTeilung(int z, int n, out double ergebnis) {
        if (n == 0) {
            ergebnis = 0;
            return false;
        }
        ergebnis = (double) z / n;
        return true;
    }
}

// Aufruf mit Deconstruction:
var (kleinste, groesste, schnitt) = service.Analysiere([10, 20, 30]);
📦 Didaktische Analogie: Das Mehrfach-Postpaket

Eine Methode konnte früher nur einen einzigen Wert zurückgeben (wie ein einzelner Brief). Mit ValueTuples packst du Min, Max und Schnitt in ein einziges handliches Paket mit 3 Aufklebern!

⚡ 2. Quick-Cheat-Sheet

ModifierInitialisierung vor Aufruf?Zuweisung in Methode?Zweck
NormalJaNein (Kopie)Standardwertübergabe
outNein (optional)JA, ZWINGEND vor returnZusätzliche Rückgabewerte
refJA, ZWINGENDOptionalIn-Place Bearbeitung des Originals
inJA, ZWINGENDVERBOTEN (Read-Only ref)Performance für große Structs

⚠️ 3. Häufige Stolperfallen (Gotchas & Anti-Patterns)

⚠️ Unvollständige out-Zuweisung

Vergisst eine Methode, einem out-Parameter in jedem Pfad vor dem `return` einen Wert zuzuweisen, kompiliert der C#-Code nicht!

⚠️ Alte Tuple-Klasse vs. ValueTuple

Verwende niemals System.Tuple (Heap-Allokation, unleserliches Item1). Nutze immer runde Klammern (int, string) (Stack-basiert).

🧠 4. Diagnostischer Selbst-Check

Überprüfe dein Verständnis von Sprach-Features, Speicherverwaltung und Enterprise-Architektur, bevor du den Code in der Web-IDE schreibst.

🎯 5. Aufgaben & Checkliste in Aufgabe.cs

💻 In Web-IDE öffnen & lösen →