diff --git a/modernStyleC8-12.md b/modernStyleC8-12.md index 6489f9b..4f029bd 100644 --- a/modernStyleC8-12.md +++ b/modernStyleC8-12.md @@ -1,39 +1,20 @@ # Petite liste d’exemples de styles modernes en C# (C# 8 → C# 12) -## 🔹 1. Opérateur ternaire (version concise) +## 🔹 1. Opérateur ternaire (version concise) (if/else) ```csharp -string status = string.Empty; -If(age >= 18) -{ - statut = "Majeur" -} -else -{ - statut = "Mineur" -} - -// ou var statut = age >= 18 ? "Majeur" : "Mineur"; ``` -Avec expression conditionnelle imbriquée : - -```csharp -var note = score switch -{ - >= 16 => "Très bien", - >= 12 => "Bien", - >= 10 => "Passable", - _ => "Insuffisant" -}; -``` - --- ## 🔹 2. `switch` expression (moderne) ```csharp +// Le _ remplace default. + +// Exemple simple +var codeErreur = 500; string message = codeErreur switch { 404 => "Introuvable", @@ -41,8 +22,81 @@ string message = codeErreur switch 500 => "Erreur serveur", _ => "Erreur inconnue" }; + +// Avec enum +enum Statut { Actif, Inactif, Suspendu } +Statut statut = Statut.Actif; +string message = statut switch +{ + Statut.Actif => "Utilisateur actif", + Statut.Inactif => "Utilisateur inactif", + Statut.Suspendu => "Compte suspendu", + _ => "Statut inconnu" +}; + +// Avec conditions (patterns relationnels) +int age = 20; +string categorie = age switch +{ + < 12 => "Enfant", + >= 12 and < 18 => "Adolescent", + >= 18 => "Adulte" +}; + +// Avec expression conditionnelle imbriquée : +var note = score switch +{ + >= 16 => "Très bien", + >= 12 => "Bien", + >= 10 => "Passable", + _ => "Insuffisant" +}; + +// Avec when (pattern guard) +int note = 15; +string resultat = note switch +{ + int n when n >= 16 => "Très bien", + int n when n >= 12 => "Bien", + int n when n >= 10 => "Passable", + _ => "Échec" +}; + +// Switch sur string +string pays = "FR"; +string langue = pays switch +{ + "FR" => "Français", + "EN" => "Anglais", + "ES" => "Espagnol", + _ => "Inconnue" +}; + +// Switch avec tuple +int x = 0, y = 5; +string position = (x, y) switch +{ + (0, 0) => "Origine", + (0, _) => "Axe Y", + (_, 0) => "Axe X", + _ => "Plan" +}; + +// Switch avec type pattern +object obj = "Bonjour"; +string description = obj switch +{ + int i => $"Entier : {i}", + string s => $"Chaîne : {s}", + null => "Null", + _ => "Autre type" +}; + +// etc +// ... ``` + --- ## 🔹 3. Parcourir un tableau / liste