Accueil > Découvrez les nouveautés de C#11
Anthony Alliot
8 novembre 2022
Read this post in English

Découvrez les nouveautés de C#11

Les nouveautés de C#11

C# 11 arrive en novembre, en même temps que .NET 7, et comme dans chaque nouvelle version, ce langage de programmation apporte son lot de nouvelles fonctionnalités.

Dans cet article, je vous propose de nous intéresser à une partie des nouveautés de C# 11 (vous pouvez retrouver la liste complète ici : What’s new in C# 11 – C# Guide | Microsoft Learn)

 

Attributs génériques

 

Il est maintenant possible de déclarer une classe d’attribut générique.

 

Avant C# 11 :

 

Avec C# 11 :

 

A noter : les arguments de type suivant ne sont pas autorisés :

  • dynamic
  • string?
  • (string x, string y)

Ils doivent être remplacés par :

  • « Object » plutôt que « dynamic »
  • « string » plutôt que « string? » (le type « Nullable » n’est pas autorisé)
  • « ValueTuple<string, string> » plutôt que «  (string x, string y) »

 

Membres requis

 

Il est possible d’ajouter le modificateur « required » sur les propriétés d’une classe, afin de rendre leur initialisation obligatoire.

 

Chaînes littérales brutes (Raw string literals)

 

Ce nouveau format de chaîne de caractères permet de contenir des espaces, des retours à la ligne et certains caractères spéciaux. Ces chaînes de caractères commencent et finissent par des triples double quote (“””). Il est également possible de combiner ce format avec l’interpolation de chaîne pour inclure des « { » dans le texte. Le nombre de  « $ » indique le nombre d’accolades consécutives qui commencent et terminent l’interpolation.

 

Retour à la ligne dans l’interpolation de chaîne

 

Cette fonctionnalité permet d’inclure dans une chaîne de caractères un retour à la ligne dans l’interpolation.

Avant C# 11 (tout le code est sur une même ligne) :

 

Avec C# 11 :

 

Chaines littérales UTF-8

 

Il est dorénavant possible de simplifier la création de chaîne UTF-8.

 

Avant C# 11 :

byte[] array = Encoding.UTF8.GetBytes("Hello World");

 

Avec C# 11 :

byte[] array = "Hello World"u8.ToArray();

 

Scope « nameof » étendu

 

Les noms des paramètres d’une méthode sont maintenant disponibles dans le scope de « nameof » lors de la déclaration d’un attribut :

[MyAttribute(nameof(param))]

        public void Method(int param, [MyAttribute(nameof(param))] int anotherParam)

        { }

List patterns

 

Il étend le pattern matching pour intégrer la correspondance avec des séquences d’éléments d’une liste ou d’un tableau.

 

Nouveau mot clé : « file »

 

Ce nouveau mot clé permet de créer un type dont la visibilité est limitée au fichier dans lequel il est déclaré. Dans l’exemple ci-dessous, la classe « User » ne pourra pas être instanciée en dehors de ce fichier CS :

 

Avis d’expert sur les nouveautés C# 11

 

Voici donc un aperçu de la plupart des nouvelles fonctionnalités de C# 11, certaines étant plus utiles que d’autres. Pour ma part, je sais déjà que les fonctionnalités 1 (attributs génériques), 2 (membres requis) et 4 (retour à la ligne dans l’interpolation de chaîne) me seront utiles lors de mon passage à C# 11.

 

Vous souhaitez en savoir plus sur les nouveautés de .NET 7 ? Retrouvez nos autres articles sur ce sujet :

Nos autres articles
Commentaires
Laisser un commentaire

Restez au courant des dernières actualités !
Le meilleur de l’actualité sur le Cloud, le DevOps, l’IT directement dans votre boîte mail.