1. On se rappelle l'interpolation de chaînes
Assez souvent, on a besoin non seulement d'afficher une chaîne, mais aussi d'y insérer des valeurs de variables. Avant, pour ça, on utilisait soit la concaténation (+), soit la méthode string.Format. Mais depuis que la magie est arrivée en C# — l'interpolation de chaînes (string interpolation), — la vie est devenue carrément plus cool.
Comment marche l'interpolation de chaînes
Ajoute le symbole $ devant la chaîne, et à l'intérieur utilise des accolades {} pour insérer des variables ou même des expressions entières.
Comparaison de l'ancien et du nouveau style d'affichage avec des variables
string name = "Anna";
int age = 24;
Console.WriteLine("Je m'appelle " + name + ", j'ai " + age + " ans."); // Ancien style
Console.WriteLine($"Je m'appelle {name}, j'ai {age} ans."); // Nouveau style !
Tu peux insérer direct des calculs et des expressions :
int a = 5, b = 10;
Console.WriteLine($"La somme {a} + {b} = {a + b}");
2. Comment marche l'interpolation de chaînes
On met $ devant la chaîne, et les variables ou expressions sont entourées d'accolades {} :
string name = "Anna";
int age = 24;
Console.WriteLine($"Je m'appelle {name}, j'ai {age} ans.");
- Tout ce qui est en dehors des accolades — c'est juste du texte.
- Tout ce qui est à l'intérieur des accolades est interprété comme du code C# : ça peut être un nom de variable, de l'arithmétique, un appel de méthode, etc.
Calculs et expressions direct dans la chaîne
L'interpolation ne se limite pas aux variables simples ! Voilà ce que tu peux faire :
Expressions arithmétiquesint pommes = 7;
int poires = 5;
Console.WriteLine($"J'ai au total {pommes + poires} fruits."); // 12
Opérations avec des chaînes et des méthodes
string ville = "Budapest";
Console.WriteLine($"Ville en majuscules : {ville.ToUpper()}"); // BUDAPEST
Opérateurs ternaires, conditions
int note = 90;
Console.WriteLine($"Note : {(note >= 60 ? "validé" : "non validé")}");
Appels de méthodes
string FormatUser(string name, int age) => $"{name} ({age})";
Console.WriteLine($"Utilisateur : {FormatUser("Eva", 19)}"); // Utilisateur : Eva (19)
Travailler avec des tableaux et des collections
int[] nombres = { 3, 5, 7 };
Console.WriteLine($"Somme : {nombres.Sum()}");
Console.WriteLine($"Éléments : {string.Join(", ", nombres)}");
Expressions imbriquées et constructions complexes
var user = new { Name = "Oleg", Role = "Admin" };
Console.WriteLine($"Nom : {user.Name}, rôle : {(user.Role == "Admin" ? "administrateur" : "utilisateur")}");
les expressions dans les accolades doivent rester courtes et lisibles. Si la logique est complexe — mieux vaut la calculer avant et insérer une variable prête.
var etudiant = new { Name = "Sacha", Info = new { Age = 21, Uni = "Harvard" } };
Console.WriteLine($"Nom : {etudiant.Name}, université : {etudiant.Info.Uni}");
Conversions de types à la volée
double prix = 19.99;
int quantite = 3;
Console.WriteLine($"Prix total : {prix * quantite} euros");
Date et heure — direct au bon format
DateTime now = DateTime.Now;
Console.WriteLine($"Aujourd'hui : {now.Day}.{now.Month}.{now.Year}");
Exemple avec une boucle
var jours = new[] { "Lun", "Mar", "Mer" };
Console.WriteLine($"Jours de la semaine : {string.Join(", ", jours)}");
3. Formatage dans l'interpolation
Souvent, c'est important d'afficher joliment des nombres, des dates, des devises ou des pourcentages.
L'interpolation permet de préciser le format direct dans les accolades — après les deux-points.
Syntaxe générale : {expression:format}
Formatage des nombres
double num = 1234.5678;
Console.WriteLine($"Arrondi : {num:F2}"); // 1234.57
Console.WriteLine($"En forme exponentielle : {num:E1}"); // 1.2E+003
Console.WriteLine($"Avec séparateur de milliers : {num:N}"); // 1 234,57 (dépend de la culture)
Exemples de formats :
- F2 — deux chiffres après la virgule
- N0 — séparateur de milliers, 0 chiffre après la virgule
- E1 — format exponentiel, 1 chiffre après le point
- P0 — pourcentage, 0 chiffre après le point
double ratio = 0.1234;
Console.WriteLine($"Pourcentage : {ratio:P1}"); // 12,3 %
Formatage des dates
DateTime d = new DateTime(2025, 6, 18, 15, 42, 0);
Console.WriteLine($"Date : {d:dd.MM.yyyy}"); // 18.06.2025
Console.WriteLine($"Heure : {d:HH:mm}"); // 15:42
Console.WriteLine($"ISO : {d:yyyy-MM-ddTHH:mm:ss}"); // 2025-06-18T15:42:00
Résumé des formats de date :
- dd — jour (2 chiffres)
- MM — mois
- yyyy — année
- HH:mm — heures:minutes (24h)
- d — date courte selon la culture
- D — date longue
Formatage des devises et de l'argent
decimal cout = 2999.5m;
Console.WriteLine($"Prix : {cout:C}"); // 2,999.50 $ (dépend de la culture)
Alignement et remplissage
Tu peux définir la largeur du champ, aligner à droite ou à gauche :
int val = 7;
Console.WriteLine($"[{val,5}]"); // [ 7] — à droite
Console.WriteLine($"[{val,-5}]"); // [7 ] — à gauche
Combiner les formats
DateTime dt = DateTime.Now;
Console.WriteLine($"Aujourd'hui {dt:dddd, dd MMMM yyyy}, heure {dt:HH:mm}");
Interpolation avec différents types de données
bool ok = true;
Console.WriteLine($"Opération {(ok ? "réussie" : "erreur")}");
Chaînes multilignes avec interpolation
Récemment, on a aussi eu les raw string literals et les chaînes multilignes interpolées :
string user = "Timour";
int score = 100;
Console.WriteLine($"""
Félicitations, {user} !
Ton score : {score}
""");
Interpolation imbriquée et calculs
Tu peux appeler des méthodes, formater leur résultat et l'insérer dans la chaîne :
double[] temps = { 23.4, 25.1, 21.9 };
Console.WriteLine($"Température moyenne : {temps.Average():F1}°C");
Exemple avec un tableau (alignement + format)
Formatage et alignement dans un tableau avec interpolation
double[] prix = { 123.4, 8.9, 5643.0 };
for (int i = 0; i < prix.Length; i++)
Console.WriteLine($"Produit {i + 1}: {prix[i],10:F2} euros");
Résultat :
Produit 1: 123.40 euros
Produit 2: 8.90 euros
Produit 3: 5643.00 euros
4. Échappement et interpolation ensemble
Tu peux utiliser des caractères échappés et l'interpolation en même temps :
string user = "Macha";
Console.WriteLine($"Salut, \"{user}\"!\nRavi de faire ta connaissance.");
Affichage :
Salut, "Macha"!
Ravi de faire ta connaissance.
Si tu combines ça avec les chaînes littérales, tu mets d'abord $, puis @ (tu peux aussi faire l'inverse — c'est pareil) :
string chemin = "C:\\Temp";
Console.WriteLine($@"Fichier trouvé à l'adresse : ""{chemin}""");
GO TO FULL VERSION