Warning: Undefined array key 0 in /home/akvmwba/www/wp-content/themes/sumit/single-sumit_blog.php on line 37
Warning: Attempt to read property "name" on null in /home/akvmwba/www/wp-content/themes/sumit/single-sumit_blog.php on line 37
Quelles nouveautés dans C# 10 ?
31 mars 2022 / Par
Laurent
Temps de lecture : 3 min
Partages
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 Systemqui 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 :
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 usingpar 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.
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:
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 :
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
Maintenant avec C# 10
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 :
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.
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 :
Avec C# 10, nous pouvons simplement faire :
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 :
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.
Si vous souhaitez découvrir le reste des nouveautés de C# 10, voici quelques liens utiles :
Pour offrir les meilleures expériences, nous utilisons des technologies telles que les cookies pour stocker et/ou accéder aux informations sur l'appareil. Le consentement à ces technologies nous permettra de traiter des données telles que le comportement de navigation ou les identifiants uniques sur ce site. Ne pas consentir ou retirer son consentement peut affecter négativement certaines caractéristiques et fonctions.
Fonctionnement
Toujours activé
Le stockage ou l'accès technique est strictement nécessaire dans le but légitime de permettre l'utilisation d'un service spécifique explicitement demandé par l'abonné ou l'utilisateur, ou dans le seul but d'effectuer la transmission d'une communication sur un réseau de communications électroniques.
Préférences
Le stockage ou l’accès technique est nécessaire dans la finalité d’intérêt légitime de stocker des préférences qui ne sont pas demandées par l’abonné ou l’utilisateur.
Statistiques
Le stockage ou l’accès technique qui est utilisé exclusivement à des fins statistiques.Le stockage ou l'accès technique qui est utilisé exclusivement à des fins statistiques anonymes. Sans assignation à comparaître, conformité volontaire de la part de votre fournisseur de services Internet ou enregistrements supplémentaires d'un tiers, les informations stockées ou récupérées à cette seule fin ne peuvent généralement pas être utilisées pour vous identifier.
Marketing
Le stockage ou l'accès technique est nécessaire pour créer des profils d'utilisateurs pour envoyer de la publicité ou pour suivre l'utilisateur sur un site Web ou sur plusieurs sites Web à des fins de marketing similaires.