Découvrons les nouveautés de C# 8, de manière plus approfondies. Vous le savez sans doute, C#8 sera pleinement utilisable du côté dotnet core.
De nombreuses fonctionnalités sont prévues, et certaines vont faire évoluer des habitudes … vieilles de plus de 10 000 ans (au moins )
Installation de dotnet core 3
Si c’est pas déjà fait, installez le SDK du framework .net core 3.0 (même s’il est encore en bêta 7).
Puis activez la possibilité dans Visual Studio 2019 d’utiliser les versions bêtas
Redémarrez votre Visual Studio 2019 et tout sera OK
C’est le cas des expression dans le selon, les switch expression
Avant C#7, on était limité
Tout le monde connaît le switch : le fameux mot clef qui permet d’éviter les if else en chaine.
Certains l’aiment, d’autres ne le recommandent pas … c’est une question de goût et d’habitude, non ?
Avant C# 7, nous étions limités aux types primitifs en fait (int, string, bool, …).
Depuis C# 7, on peut manipuler d’autres types
Tout ceci est rendu possible grâce au pattern matching.
Prenons un wookie qui a un nom et une taille comme propriétés :
Vous pouvez vouloir créer une méthode générique qui affiche la naissance d’un Wookie, ou d’un autre bébé, quelque soit son type.
(bon ici, c’est pas très Design Pattern, mais bon c’est pour l’exemple )
Vous écrivez alors un Patter matching sur le wookie, et vous pouvez même rajouter un pattern matching sur la taille du Wookie.
Note: le case avec une condition when doit être écrit avant le case plus générique.
Bon ça c’était en C# 7.
Amélioration de la syntaxe en C# 8
Attention, avant d’utiliser cette fonctionnalité pensez à aller activer l’utilisation du C# 8 (bêta) dans les options avancées de Build.
Passons maintenant à la même méthode, en C# 8.
La syntaxe est plus “expression lambda” stylée.
Note importante : Ici on ne peut pas traiter un Console.WriteLine. En fait, c’est un traitement sur un contenu à créer.
Ca modifie aussi l’utilisation du switch.
Analyse des propriétés
Vous pouvez aller plus loin en analysant les propriétés de l’objet, et poser des conditions, directement dans le case when souhaité :
C’est impressionnant de voir que C# est capable de typer en Wookie et en même temps vérifier le contenu d’une de ses propriétés !
Pour aller plus loin
https://docs.microsoft.com/fr-fr/dotnet/csharp/pattern-matching
https://docs.microsoft.com/fr-fr/dotnet/csharp/whats-new/csharp-7#pattern-matching
https://docs.microsoft.com/fr-fr/dotnet/csharp/whats-new/csharp-8