This commit is contained in:
Grizouille
2025-12-15 17:21:02 +01:00
parent e0f3076673
commit 73b03baed6
3 changed files with 224 additions and 4 deletions

View File

@@ -261,9 +261,7 @@ Même à léchelle dun mini-jeu console, cette architecture permet :
* une application concrète des principes **SOLID** * une application concrète des principes **SOLID**
* une implémentation claire de l**architecture hexagonale** * une implémentation claire de l**architecture hexagonale**
> *Ps:*<br/> > *Ps:* On a donc utilisé un canon pour écraser une mouche, mais au moins, <br/> on sait comment fonctionne le canon !
> On a donc utilisé un canon pour écraser une mouche, mais au moins, on sait comment fonctionne le canon!<br/>
> Et oui, c'est excessif pour un jeu en console. Non, on ne regrette rien. L'apprentissage n'a pas de prix (mais a beaucoup de classes).
--- ---

220
modernStyleC8-12.md Normal file
View File

@@ -0,0 +1,220 @@
Bien sûr 🙂
Voici une **petite liste dexemples de styles modernes en C# (C# 8 → C# 12)**, avec des cas courants : conditions, parcours de tableaux, création dobjets, etc.
---
## 🔹 1. Opérateur ternaire (version concise)
```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
string message = codeErreur switch
{
404 => "Introuvable",
401 => "Non autorisé",
500 => "Erreur serveur",
_ => "Erreur inconnue"
};
```
---
## 🔹 3. Parcourir un tableau / liste
### `foreach` (simple et propre)
```csharp
foreach (var item in items)
{
Console.WriteLine(item);
}
```
### LINQ (fonctionnel)
```csharp
items
.Where(i => i.IsActive)
.Select(i => i.Name)
.ToList()
.ForEach(Console.WriteLine);
```
---
## 🔹 4. Création dobjet (init rapide)
### Initialiseur dobjet
```csharp
var user = new User
{
Id = 1,
Name = "Alice",
IsAdmin = true
};
```
### Constructeur concis (target-typed `new`)
```csharp
User user = new(1, "Alice", true);
```
---
## 🔹 5. `record` (objets immuables très moderne)
```csharp
public record User(int Id, string Name, bool IsAdmin);
```
Utilisation :
```csharp
// 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 `?.`
```csharp
// 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 `??`
```csharp
// Si user.Name == null alors on assigne "Inconnu"
string name = user.Name ?? "Inconnu";
```
### Affectation conditionnelle `??=`
```csharp
// Si null alors on assigne.
user.Name ??= "Par défaut";
```
---
## 🔹 7. Expressions lambda
```csharp
Func<int, int> carre = x => x * x;
Console.WriteLine(carre(5));
```
---
## 🔹 8. Pattern matching
```csharp
if (obj is User { IsAdmin: true })
{
Console.WriteLine("Admin détecté");
}
```
---
## 🔹 9. Tableaux et collections modernes
### Création simplifiée (C# 9+)
```csharp
int[] nombres = { 1, 2, 3, 4 };
```
### Range & Index
```csharp
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)
```csharp
int Add(int a, int b) => a + b;
```
---
## 🔹 11. `using` moderne (sans bloc)
```csharp
using var file = new StreamWriter("test.txt");
file.WriteLine("Hello");
```
---
## 🔹 12. Collections immuables rapides
```csharp
// Création d'un tableau de string
var fruits = new[] { "Pomme", "Banane", "Orange" };
```

View File

@@ -158,4 +158,6 @@ private int Write(int value){
return value + 1; return value + 1;
} }
``` ```
Pour aller plus loins: [ici](./modernStyleC8-12.md)