Tout sur: C#11

Your Content Goes Here

26/12/2022

3min

Table des matières

 

Sur ce blog, et ce depuis le début de cette année scolaire, nous nous efforçons de vous présenter les nouveautés les plus intéressantes de C#11.

Étant spécialisés dans le craftsmanship .NET et Microsoft depuis notre création, il nous paraît essentiel de vous fournir une veille sur .NET.

Cette veille se doit d’être la plus « récente » possible, pour que vous ayiez les clés en main pour dépasser les limites de votre équipe de développement.

Les écrire en français furent aussi un critère important, car nous voulions apporter aux francophones un savoir informatique sans aucune barrière linguistique.

C’est donc dans cette optique que nous vous proposons un récap de toutes les nouveautés les plus intéressantes de C#11, que nous avons pu couvrir dans ce blog.

Commençons sans plus attendre !

Le mot-clef required

public record Insider { public required int Age { get; set; } }

Le mot-clef required permet de spécifier qu’une variable est requise lors de l’initialisation d’un type.

Sans initialisation de cette variable, on obtient une erreur de compilation.

Pratique pour contrôler le comportement des utilisateurs d’une librairie!

Pour plus d’informations, rendez-vous sur cet article: Comment le mot-clef required va devenir votre meilleur ami.

Les chaînes littérales brutes

var json = """ { "maturation": 10, "nom": "Cheddar" } """;

Aussi appelées raw string literals dans la langue de Shakespeare, ces chaînes viennent avec une nouvelle notation à trois guillemets """.

Cette nouvelle notation permet notamment de copier/coller du JSON de manière bien plus élégante. Pour plus d’informations, rendez-vous sur cet article: Raw string literals.

Les types à portée fichier

file class HiddenDecisionMaker { public int DecideWinnerId() => new Random().Next(1, 42); }

Je n’ai pas trouvé de meilleure traduction. Les types à portée fichier (file-scoped types chez l’oncle Sam) ne sont rien de plus que des classes ou des structures de données qui n’existent que dans un fichier donné.

Cela est rendu possible avec l’apparition du mot-clef file.

Cette nouvelle portée offre des perspectives de découpage de code encore jamais vues dans le monde Microsoft.

Ou bien peut-être n’était-ce que pour cacher le caractère inesthétique de certains codes générés ? Seul l’avenir nous le dira.

En attendant, vous pouvez toujours aller voir notre article: File-scoped types.

Les list patterns

int?[] numbers = { 1, 2, 3 }; if (numbers is [1, 2, 3]) Console.WriteLine("Viva la Hongrie!");

Les list patterns sont une nouveauté assez bluffante. Elles permettent, en quelques mots, d’enrichir le pattern matching de nouvelles conditions liées aux listes.

Bonus non négligeable: le code produit est lisible par un enfant de 6 ans. À tester!
En attendant que votre rejeton sache lire, jetez un oeil à cet article: List patterns.

Les chaînes littérales UTF-8

var nom = "César"u8;

Avec ce nouveau suffixe u8, on spécifie que la chaîne "César" est en UTF-8.

Ouais… Et ? Et bien cette nouveauté qui a l’air anodine renferme en fait un avantage non négligeable, car elle permet d’améliorer grandement les performances des applis web, si utilisée correctement.

Microsoft utilise déjà cette nouveauté dans le framework ASP.NET.

Pour comprendre en quoi cette notation améliore grandement les performances, rendez-vous sur: Comment les chaînes littérales UTF-8 vont améliorer vos performances.