csharp / expert
Snippet
Erschöpfendes Pattern Matching für Domain-Logik
Die Nutzung rekursiver Patterns und Guard-Klauseln ermöglicht deklarativen, typsicheren Kontrollfluss. Dieses Muster emuliert funktionale 'match'-Ausdrücke und stellt sicher, dass alle möglichen Datenformen explizit auf Funktionsebene behandelt werden.
snippet.cs
csharp
1
2
3
4
5
6
7
8
9
10
11
12
13
public record ProcessingState;public record Idle : ProcessingState;public record Working(int Progress) : ProcessingState;public record Faulted(string Error) : ProcessingState;public static string Describe(ProcessingState state) => state switch{Idle => "System is dormant",Working { Progress: > 90 } => "Almost finished...",Working w => $"Processing: {w.Progress}%",Faulted(var msg) => $"Critical Failure: {msg}",_ => throw new ArgumentException("Unknown state", nameof(state))};
Erklärung
1
Working { Progress: > 90 }
Ein Property-Pattern mit einem relationalen Sub-Pattern, um spezifische Objektzustände zu filtern.
2
Faulted(var msg)
Positionsabhängige Dekonstruktion eines Records, um den internen Zustand direkt zu extrahieren.