Quelques nouveautés de C# 13

Par:
fredericmazue

mar, 04/06/2024 - 11:42

Lors de sa conférence développeurs Build 2024 Microsoft a présenté quelques nouveautés de C# 13 en préversion. Microsoft a tout d'abord souligfné que C# 13 se concentre sur la flexibilité et les performances, en ce qui concerne la flexibilité, à tout particulièrement mis en avant l'améliorations des params de C#.

Améliorations des params de C#

A partir de C#13, les params ne sont plus limités aux tableaux. Lorsque le mot-clé params apparaît avant un paramètre, les appels à la méthode peuvent fournir une liste délimitée par des virgules de zéro ou plusieurs valeurs et ces valeurs sont placées dans une collection du type du paramètre. À partir de C# 13, le type de paramètre params peut être n’importe quel type utilisé avec les expressions de collection, comme List<T>, Span<T> et IEnumerable<T>. Vous pouvez même utiliser vos propres types de collections s'ils suivent des règles spéciales.

Spécifiez simplement un type de collection différent comme type de paramètre :

void PrintList(params IEnumerable<string> list)
    => Console.WriteLine(string.Join(", ", list));

PrintList("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat");

// prints "Sun, Mon, Tue, Wed, Thu, Fri, Sat"

Selon Microsoft, C'est vraiment aussi simple que d'utiliser le type de collection qui correspond le mieux à vos besoins. Les programmeurs utilisant votre méthode peuvent simplement transmettre une liste de valeurs délimitées par des virgules. Ils n'ont pas besoin de se soucier du type sous-jacent.

params et interfaces

params supporte les interfaces. Vous pouvez donc simplement utiliser des interfaces pour vos types parals. Si vous transmettez une valeur d'un type qui implémente l'interface, elle sera utilisée. Lorsqu'une liste de valeurs ou une expression de collection est transmise, le compilateur vous donnera le meilleur type concret.

Types d'extensions

Depuis C# 3, les méthodes d'extension vous permettent d'ajouter des méthodes à un type sous-jacent, même si vous ne pouvez pas modifier son code. C# 13 passe à l'étape suivante avec les types d'extensions. Il s'agit d'un nouveau type de type qui fournit des membres d'extension pour un type sous-jacent. Ils ont des méthodes, des propriétés et d’autres membres qui peuvent être des instances ou statiques. Les types d'extension d'instance ne peuvent pas contenir d'état. Par exemple, ils ne peuvent pas inclure de champs. Ils peuvent accéder à l’état sur le type sous-jacent ou à un autre emplacement.

Il existe deux types d'extensions : les extensions implicites et explicites. Les types d'extension implicites s'appliquent à toutes les occurrences du type sous-jacent – ​​de la même manière que les méthodes d'extension le font aujourd'hui. Les méthodes et propriétés d'extension explicites s'appliquent uniquement aux instances du type sous-jacent qui ont été converties en type d'extension explicite.

Un type d'extension s'appuie sur un type sous-jacent, qui sont simplement des types C# normaux. L'une des raisons pour lesquelles vous pouvez utiliser une extension est que vous ne pouvez pas modifier le code du type sous-jacent.

Les types d'extensions ne sont pas disponibles dans l'parçu de C#13 au moment où nous écrivons ces lignes. Microsofrt indique qu'ils le seront dans le prochain aperçu.