Files
DecouverteDev/modernStyleC8-12.md
Grizouille 480e7928d8 wip
2025-12-15 17:22:39 +01:00

3.6 KiB
Raw Blame History

Petite liste dexemples de styles modernes en C# (C# 8 → C# 12)

🔹 1. Opérateur ternaire (version concise)

string status = string.Empty;
If(age >= 18)
{
    statut = "Majeur"
} 
else 
{
    statut = "Mineur"
}

// ou
var statut = age >= 18 ? "Majeur" : "Mineur";

Avec expression conditionnelle imbriquée :

var note = score switch
{
    >= 16 => "Très bien",
    >= 12 => "Bien",
    >= 10 => "Passable",
    _ => "Insuffisant"
};

🔹 2. switch expression (moderne)

string message = codeErreur switch
{
    404 => "Introuvable",
    401 => "Non autorisé",
    500 => "Erreur serveur",
    _   => "Erreur inconnue"
};

🔹 3. Parcourir un tableau / liste

foreach (simple et propre)

foreach (var item in items)
{
    Console.WriteLine(item);
}

LINQ (fonctionnel)

items
    .Where(i => i.IsActive)
    .Select(i => i.Name)
    .ToList()
    .ForEach(Console.WriteLine);

🔹 4. Création dobjet (init rapide)

Initialiseur dobjet

var user = new User
{
    Id = 1,
    Name = "Alice",
    IsAdmin = true
};

Constructeur concis (target-typed new)

User user = new(1, "Alice", true);

🔹 5. record (objets immuables très moderne)

public record User(int Id, string Name, bool IsAdmin);

Utilisation :

// User(int id, string name, bool isAdmin)
var user = new User(1, "Alice", false);
// Retourn false.
var admin = user with { IsAdmin = true };

🔹 6. Null safety (très utilisé)

Opérateur ?.

// Si user == null alors on n'accède pas à Name
// Si Name == null alors on n'accède pas à Length
var length = user?.Name?.Length;

Coalescence ??

// Si user.Name == null alors on assigne "Inconnu"
string name = user.Name ?? "Inconnu";

Affectation conditionnelle ??=

// Si null alors on assigne.
user.Name ??= "Par défaut";

🔹 7. Expressions lambda

Func<int, int> carre = x => x * x;
Console.WriteLine(carre(5));

🔹 8. Pattern matching

if (obj is User { IsAdmin: true })
{
    Console.WriteLine("Admin détecté");
}

🔹 9. Tableaux et collections modernes

Création simplifiée (C# 9+)

int[] nombres = { 1, 2, 3, 4 };

Range & Index

int[] nombres = { 1, 2, 3, 4, 5 };

// INDEX (^)  à partir de la fin
var ... = nombres[^1];           // dernier élément → 5
var ... = nombres[^2];           // avant-dernier → 4
var ... = nombres[^3];           // retourne 3

// RANGE (..)  sous-tableaux
var ... = nombres[1..4];         // {2, 3, 4}
// Un seul élément via Range
var ... = nombres[2..3];         // {3}
// Début → Fin du tableau
var ... = nombres[2..];          // {3, 4, 5}
// Début du tableau → Fin
var ... = nombres[..3];          // {1, 2, 3}
// Début → Fin (exclus)
var sousTableau = nombres[1..4]; // {2, 3, 4}
// Tout le tableau
var ... = nombres[..];           // {1, 2, 3, 4, 5}
// Range avec Index depuis la fin
var ... = nombres[1..^1];        // {2, 3, 4}
// Derniers éléments
var ... = nombres[^2..];         // {4, 5}
// Tout sauf les deux derniers
var ... = nombres[..^2];         // {1, 2, 3}

🔹 10. Méthodes dexpression (très clean)

int Add(int a, int b) => a + b;

🔹 11. using moderne (sans bloc)

using var file = new StreamWriter("test.txt");
file.WriteLine("Hello");

🔹 12. Collections immuables rapides

// Création d'un tableau de string
var fruits = new[] { "Pomme", "Banane", "Orange" };