💡 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]);
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
| Modifier | Initialisierung vor Aufruf? | Zuweisung in Methode? | Zweck |
|---|---|---|---|
| Normal | Ja | Nein (Kopie) | Standardwertübergabe |
out | Nein (optional) | JA, ZWINGEND vor return | Zusätzliche Rückgabewerte |
ref | JA, ZWINGEND | Optional | In-Place Bearbeitung des Originals |
in | JA, ZWINGEND | VERBOTEN (Read-Only ref) | Performance für große Structs |
⚠️ 3. Häufige Stolperfallen (Gotchas & Anti-Patterns)
Vergisst eine Methode, einem out-Parameter in jedem Pfad vor dem `return` einen Wert zuzuweisen, kompiliert der C#-Code nicht!
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.