Switch Expression–Les nouveautés de C# 8–dotnet core

switch expression dotnet core csharp 8

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 Open-mouthed smile)

 

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).

image

 

Puis activez la possibilité dans Visual Studio 2019 d’utiliser les versions bêtas

image

 

Redémarrez votre Visual Studio 2019 et tout sera OK Smile

image

 

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 :

image

 

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 Open-mouthed smile)

 

Vous écrivez alors un Patter matching sur le wookie, et vous pouvez même rajouter un pattern matching sur la taille du Wookie.

image

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.

image

 

Passons maintenant à la même méthode, en C# 8.

La syntaxe est plus “expression lambda” stylée.

image

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é :

image

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

Notre adresse

1 rue du guesclin
44000 Nantes

Notre téléphone

+33 2 79 65 52 87

Société

DevToBeCurious SARL
84860163900018 - Nantes B 848 601 639