csharp / expert
Snippet
Vollständige verschachtelte Muster-Wächter
Moderner C#-Kontrollfluss nutzt Pattern Matching, um komplexe Zustandsbewertungen deklarativ zu verarbeiten. Eigenschaftsmuster und relationale Muster (wie `> 5`) ermöglichen eine ausdrucksstarke Logik, die lesbarer und weniger fehleranfällig ist als verschachtelte `if-else`-Blöcke, während der `switch`-Ausdruck eine vollständige Behandlung sicherstellt.
snippet.cs
csharp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public record User(string Role, bool IsActive, int AccessLevel);public class AuthProcessor{public string EvaluateAccess(User user) => user switch{{ Role: "Admin", IsActive: true } => "Full Access",{ Role: "Editor", AccessLevel: > 5 } => "Restricted Edit",{ Role: var r, IsActive: false } => $"Suspended {r}",_ => "Access Denied"};public static bool IsComplexMatch(object obj) => obj switch{int[] { Length: > 0 } arr when arr[0] > 100 => true,string s or (int or long) => true,_ => false};}
Erklärung
1
{ Role: "Editor", AccessLevel: > 5 }
Kombiniert ein Eigenschaftsmuster mit einem relationalen Muster, um spezifische Objektzustände abzugleichen.
2
int[] { Length: > 0 } arr when arr[0] > 100
Ein Positionsmuster kombiniert mit einem 'when'-Wächter, um eine tiefe Inspektion des Array-Inhalts durchzuführen.