C# Version 12

 C# 12

C# 12 intègre les nouvelles fonctionnalités suivantes. Vous pouvez essayer ces fonctionnalités à l’aide de la dernière version de Visual Studio 2022 ou du Kit de développement logiciel (SDK) .NET 8.

Constructeurs principaux

Vous pouvez désormais créer des constructeurs principaux dans n’importe quel class et struct. Les constructeurs principaux ne sont plus limités aux types record. Les paramètres de constructeur principal se trouvent dans l’étendue de l’ensemble du corps de la classe. Pour garantir l’affectation définitive de tous les paramètres de constructeur principal, tous les constructeurs explicitement déclarés doivent appeler le constructeur principal à l’aide de la syntaxe this(). L’ajout d’un constructeur principal à class empêche le compilateur de déclarer un constructeur sans paramètre implicite. Dans struct, le constructeur sans paramètre implicite initialise tous les champs, notamment les paramètres de constructeur principal selon le modèle 0 bit.

Le compilateur génère des propriétés publiques pour les paramètres de constructeur principal uniquement dans les types record, qu’il s’agisse des types record class ou record struct. Les classes et les structs qui ne sont pas des enregistrements ne souhaitent pas toujours ce comportement pour les paramètres de constructeur principal.
introduites dans Visual Studio 2022 version 17.7 préversion 5.

Les expressions de collection introduisent une nouvelle syntaxe concise pour créer des valeurs de collection courantes. L’inlining d’autres collections dans ces valeurs est possible à l’aide d’un opérateur de propagation ...

Plusieurs types de collection peuvent être créés sans nécessiter de prise en charge BCL externe. Ces types sont les suivants :
Les types de tableaux, tels que int[].
Voir System.Span<T> et System.ReadOnlySpan<T>.
Types qui prennent en charge les initialiseurs de collection, tels que System.Collections.Generic.List<T>.

// Create an array: int[] a = [1, 2, 3, 4, 5, 6, 7, 8]; // Create a list: List<string> b = ["one", "two", "three"]; // Create a span Span<char> c = ['a', 'b', 'c', 'd', 'e', 'f', 'h', 'i']; // Create a jagged 2D array: int[][] twoD = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]; // Create a jagged 2D array from variables: int[] row0 = [1, 2, 3]; int[] row1 = [4, 5, 6]; int[] row2 = [7, 8, 9]; int[][] twoDFromVariables = [row0, row1, row2];

L’opérateur de propagation, .. dans une expression de collection remplace son argument par les éléments de cette collection. L’argument doit être un type de collection. Les exemples suivants montrent comment fonctionne l’opérateur de propagation :

int[] row0 = [1, 2, 3]; int[] row1 = [4, 5, 6]; int[] row2 = [7, 8, 9]; int[] single = [.. row0, .. row1, .. row2]; foreach (var element in single) { Console.Write($"{element}, "); } // output: // 1, 2, 3, 4, 5, 6, 7, 8, 9,

Tableaux inline

introduits dans Visual Studio 2022 version 17.7 préversion 3.


Paramètres facultatifs dans les expressions lambda 
Paramètres ref readonly
Alias de n’importe quel type 
Attribut expérimental
Intercepteurs - Fonctionnalité expérimentale


C# 12 est pris en charge sur .NET 8.


Commentaires

Posts les plus consultés de ce blog

Sécurité des Applications

Principes de la Programmation Orientée Objet

Principe de Responsabilité Unique