Quelles nouveautés dans C# 10 ?

31 mars 2022 / Par Laurent

Temps de lecture : 3 min

sumit
sumit

Le 8 novembre 2021, Microsoft annonçait la sortie de C# 10, supporté par .NET 6 et Visual Studio 2022, sortis le même jour.

Dans cet article, nous regarderons de près les nouveautés favorites introduites, notamment:

  • L’utilisation globale d’espace de noms (namespaces en Anglais)

  • Les espaces de noms à portée fichier

  • L’interpolation ou concaténation des constantes de type chaîne de caractères

  • La vérification d’arguments à valeur nulle

  • Expression with sur les données de types struct et anonyme

L’utilisation globale d’espace de noms

Jusqu’à C# 9, il est courant de voir les mêmes espaces de noms (namespaces) importés partout dans les fichiers du projet. L’exemple le plus remarquable est le namespace System qui est souvent utilisé.

La bonne nouvelle est que C# 10 introduit la directive global using et ImplicitUsings pour réduire ou permettre la réutilisation des espaces de noms répétitifs.

Lorsque vous constatez l’utilisation des mêmes espaces de noms dans divers endroits dans votre projet, mettez ces espaces de noms dans un fichier .cs.

Bien que cela ne soit pas obligatoire, il est conseillé de placer toutes vos directives d’utilisation globale dans un fichier standard pour tous vos projets, par exemple GlobalUsings.cs, mais vous êtes libres d’utiliser le nom qui vous convient.

Supposons que j’ai 4 namespaces importés dans presque tous les fichiers de mon projet, je les mets dans un fichier GlobalUsings.cs à la racine de mon projet tout en précédant chaque importation de la directive global comme suit :

Quelles sont les nouveautés de C# 10 ? GlobalUsing

La question qui peut se poser est comment le compilateur reconnaîtra-t-il ces importations de namespaces de portée globale ?

C’est là qu’intervient la notion d’utilisation ou d’importation implicite qui permet la détection automatiquement des directives global using par tous les fichiers du projet.

Pour ce faire, il suffit d’aller dans le fichier .csproj de votre projet et d’y mettre ImplicitUsings  à enable si ce n’est pas encore le cas.

Quelles sont les nouveautés de C# 10 ? ImplicitUsing

Si vous ne préférez pas placer vos directives d’utilisation globale dans un fichier, vous pouvez également les ajouter à votre fichier .csproj. Si je voulais inclure les quatre directives d’utilisation globale précédentes dans mon fichier .csproj, j’ajouterais ce qui suit à mon fichier .csproj:

Quelles sont les nouveautés de C# 10 ? globalUsingInCsProj

Il se peut, dans votre organisation ou équipe, que cette nouveauté de C# 10 ne soit pas encouragée, si cela est le cas, vous pouvez la désactiver en ajoutant ce qui suit à votre fichier .csproj :

Quelles sont les nouveautés de C# 10 ? globalUsingInCsProjDisable

Les espaces de noms de portée fichier

Une nouvelle manière de déclarer les espaces de noms a été introduite dans C# 10 supprimant un niveau d’imbrication.

Jusqu’à C# 9, il était obligatoire de mettre des accolades après les espaces de noms avant la définition des classes, interfaces ou enums. Maintenant plus besoins d’accolades, il suffit de mettre point virgule(;) après l’espace de nom, ensuite.

Avant

Quelles sont les nouveautés de C# 10 ? OldNameSpace

Maintenant avec C# 10

Quelles sont les nouveautés de C# 10 ? NewNameSpace

Toutefois, vous ne pouvez pas déclarer un espace de noms imbriqué ou un deuxième espace de noms dans le même fichier comme suit :

Quelles sont les nouveautés de C# 10 ? InkedCantDoNameSapce

L’interpolation ou concaténation des constantes de type chaîne de caractères

Une autre nouveauté très inattendue est la possibilité d’interpoler des chaînes de caractères de type constantes.

Quelles sont les nouveautés de C# 10 ? ConstantInterpolation

La vérification d’arguments à valeur nulle

Vérifier si la valeur d’un argument est nulle est quelque chose de courant voir important pour éviter des comportements inattendus dans un programme. Ceci peut se faire avec une simple condition if ou via des librairies comme Ardalis.GuardClauses ou encore FluentValidation.

On pouvait donc faire :

Quelles sont les nouveautés de C# 10 ? NullChecking

Avec C# 10, nous pouvons simplement faire :

Quelles sont les nouveautés de C# 10 ? NewNullChecking

Expression with sur les données de type struct et anonyme

L’expressionwith génère une copie de son opérande avec les propriétés modifiées. Prenons l’exemple du type anonyme suivant :

Quelles sont les nouveautés de C# 10 ? AnonymeObject

Si nous cherchons à avoir une copie modifiée de la donnée blogPost, nous pouvons utiliser l’expression with sur les propriétés à modifier.

Quelles sont les nouveautés de C# 10 ? WithAnonymeObject

Si vous souhaitez découvrir le reste des nouveautés de C# 10, voici quelques liens utiles :