Dot.Blog

C#, XAML, Xamarin, UWP/Android/iOS

C# 6–Concaténation de chaînes

[new:15/02/2015]Dans la série des petites nouveautés sympathiques de C# 6, voyons de plus prêt celles qui concernent la concaténation de chaînes de caractères…

Concaténer

La concaténation est une opération simple et largement utilisée. Elle peut s’opérer de trois façons :

  1. Par l’addition (+) comme s’il s’agissait de nombres
  2. Par la classe StringBuilder plus rapide mais plus verbeuse
  3. Par le string.Format et ces différentes options

 

Ces trois méthodes ont toutes leurs avantages et leurs inconvénients, je ne reviendrai pas la dessus ici.

Concaténer façon C# 6

C# 6.0 nous offre une façon encore plus rapide et plus efficace pour concaténer des chaînes de caractères. Plus exactement cette nouvelle façon de faire remplacera souvent à merveille l’addition ou le string.Format mais n’est pas conçue pour concurrencer StringBuilder (dans le cas de nombreuses manipulations à effectuer cette classe reste la plus performante).

L’astuce consiste à insérer directement les champs dans le texte à traiter ! Et on peut même fixer des règles d’alignement, des spécificateurs de format et plus encore des conditions !

Cela va plus vite à taper et éviter un code trop lourd donc permet un debug plus aisé. Voici à quoi cela ressemble :

Console.WriteLine("Nom complet : \{personne.Prénom] \{personne.Nom}\nAge : {personne.age}");

 

Ici on formate de la façon la plus directe le nom complet d’une instance “personne” supposée pour l’exemple contenir les informations d’un individu (salarié, élève, membre d’un groupe…) sur une seule ligne puis on affiche l’âge de cette personne sur la ligne suivante. Tout l’intérêt est dans la nouvelle syntaxe qui permet d’utiliser l’anti-slash suivi d’une expression entre accolades américaines sera interprétée au runtime.

Mais on peut aller plus loin avec du padding pour cadrer le texte et l’indication de chaînes de format pour les nombres par exemple :

Console.WriteLine("Nom : \{personne.Nom, 15}\nCrédit : \{personne.Crédit : C2}");

 

Le nom de la personne est cadrée à gauche dans un espace de 15 caractères comblé si nécessaire par des caractères 32, un saut de ligne est effectué et le crédit du compte de la personne est formaté comme un numérique utilisant la chaîne de format “C2”.

C’est vraiment très pratique. Mais allons encore un cran plus loin avec du code conditionnel :

Console.WriteLine(
"Nom: \{p.Nom, 15}\nCrédit: \{p.Crédit : C2} \{(p.Crédit<p.Débit ? "Découvert!" : "Ok}");

 

Pour la mise en page du blog cela devient difficile puisque le jeu consiste à tout mettre dans une seule chaîne de caractères difficile à couper en deux ou trois…

Dans cet exemple on ajoute au précédent l’affichage d’une mention “Découvert!” ou “Ok” selon que le compte possède un crédit inférieur ou non à son crédit.

Conclusion

Voici encore une simplification qui évitera des lignes de code juste pour cadrer une chaîne, ajouter un mot dans certaines conditions ou cadrer un numérique correctement…

Petit rappel pour ceux qui ne sont pas encore équipés, Visual Studio 2015 preview avec .NET 4.6 est téléchargeable ici : http://www.visualstudio.com/en-us/downloads/visual-studio-2015-downloads-vs.aspx

Bon dev et Stay Tuned !

blog comments powered by Disqus