Nouveautés de C# 13

C# 13 intègre les nouvelles fonctionnalités suivantes. Vous pouvez essayer ces fonctionnalités en utilisant la dernière version de Visual Studio 2022 ou du SDK .NET 9 Preview.

C# 13 est pris en charge sur .NET 9. Pour plus d’informations, consultez Contrôle de version du langage C#.

Vous pouvez télécharger la dernière version du SDK .NET 9 Preview depuis la page des téléchargements .NET. Vous pouvez également télécharger Visual Studio 2022 - preview qui comprend le SDK .NET 9 Preview.

Les nouvelles fonctionnalités sont ajoutées à la page « Nouveautés de C# » lorsqu’elles sont disponibles dans les préversions publiques. La section Working Set de la page d’état des fonctionnalités roslyn suit la fusion des fonctionnalités à venir dans la branche principale.

Remarque

Vos commentaires sur ces fonctionnalités nous intéressent. Si vous rencontrez des problèmes avec l’une de ces nouvelles fonctionnalités, créez un nouveau problème dans le référentiel dotnet/roslyn.

Nouvelle séquence d’échappement

Vous pouvez utiliser \e en tant que séquence d’échappement de littéral de caractère pour le caractère ESCAPE, U+001Ben Unicode. Avant, vous utilisiez \u001b ou \x1b. L’utilisation de \x1b n’était pas recommandée parce que si les caractères suivant 1b étaient des chiffres hexadécimaux valides, ces caractères devenaient une partie de la séquence d’échappement.

Type naturel des groupes de méthodes

Cette fonctionnalité apporte des petites optimisations à la résolution de surcharges impliquant des groupes de méthodes. Le comportement précédent consistait à ce que le compilateur construise l’ensemble complet de méthodes candidates pour un groupe de méthodes. Si un type naturel se révélait nécessaire, celui-ci était déterminé à partir de l’ensemble complet des méthodes candidates.

Le nouveau comportement consiste à élaguer l’ensemble des méthodes candidates à chaque portée, en supprimant les méthodes candidates qui ne sont pas applicables. En règle générale, il s’agit de méthodes génériques avec une mauvaise arité ou des contraintes qui ne sont pas satisfaites. Le processus continue jusqu’à la portée externe suivante seulement si aucune méthode candidate n’a été trouvée. Ce processus suit de plus près l’algorithme général pour la résolution de surcharges. Si les méthodes candidates trouvées dans une portée donnée ne correspondent pas toutes, le groupe de méthodes n’a pas de type naturel.

Vous pouvez lire les détails des changements dans la spécification de la proposition.

Accès implicite aux index

L’opérateur d’index implicite « à partir de la fin », ^, est maintenant autorisé dans une expression d’initialiseur d’objet. Par exemple, vous pouvez maintenant initialiser un tableau dans un initialiseur d’objet, comme le montre le code suivant :

var v = new S()
{
    buffer =
    {
        [^1] = 0,
        [^2] = 1,
        [^3] = 2,
        [^4] = 3,
        [^5] = 4,
        [^6] = 5,
        [^7] = 6,
        [^8] = 7,
        [^9] = 8,
        [^10] = 9
    }
};

Dans les versions antérieures à C# 13, l’opérateur ^ ne peut pas être utilisé dans un initialiseur d’objet. Vous devez indexer les éléments devant.

Voir aussi