
C# 14 inclut les nouvelles fonctionnalit�s suivantes : Membres d�extension, Mot cl� field, Conversions de port�e implicites, Types g�n�riques non li�s et nameof, Param�tres lambda simples avec modificateurs, Plus de membres partiels, Affectation conditionnelle nulle. 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 10.
Le langage en C# constitue le langage le plus connu pour la plateforme .NET, un environnement de d�veloppement gratuit, open source et multiplateforme. Les programmes en C# peuvent s�ex�cuter sur plusieurs appareils diff�rents, des appareils Internet des objets (IoT) au cloud et partout entre les deux. Vous pouvez �crire des applications pour les t�l�phones, les appareils de bureau, les ordinateurs portables et les serveurs.
De nouvelles fonctionnalit�s sont disponible pour C#14 et 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 10. Voici les nouvelles fonctionnalit�s suivantes de C#14 :
- Membres d�extension
- Affectation par condition nulle
- nameof prend en charge les types g�n�riques non li�s
- Conversions implicites suppl�mentaires pour Span<T> et ReadOnlySpan<T>
- Modificateurs sur des param�tres lambda simples
- Propri�t�s field stock�es
- �v�nements et constructeurs partial
Membres d�extension
C# 14 ajoute une nouvelle syntaxe pour d�finir des membres d�extension. La nouvelle syntaxe vous permet de d�clarer des propri�t�s d�extension en plus des m�thodes d�extension. Vous pouvez �galement d�clarer des membres d�extension qui �tendent le type, plut�t qu�une instance du type. En d�autres termes, ces nouveaux membres d�extension peuvent appara�tre en tant que membres statiques du type que vous �tendez. L�exemple de code suivant montre un exemple des diff�rents types de membres d�extension que vous pouvez d�clarer :
Code : | S�lectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | public static class Enumerable { // Extension block extension<TSource>(IEnumerable<TSource> source) // extension members for IEnumerable<TSource> { // Extension property: public bool IsEmpty => !source.Any(); // Extension indexer: public TSource this[int index] => source.Skip(index).First(); // Extension method: public IEnumerable<TSource> Where(Func<TSource, bool> predicate) { ... } } // extension block, with a receiver type only extension<TSource>(IEnumerable<TSource>) // static extension members for IEnumerable<Source> { // static extension method: public static IEnumerable<TSource> Combine(IEnumerable<TSource> first, IEnumerable<TSource> second) { ... } // static extension property: public static IEnumerable<TSource> Identity => Enumerable.Empty<TSource>(); } } |
Les membres du premier bloc d�extension sont appel�s comme s�ils sont des membres d�instance de IEnumerable<TSource>, par exemple sequence.IsEmpty. Les membres du deuxi�me bloc d�extension sont appel�s comme s�ils sont des membres statiques de IEnumerable<TSource>, par exemple IEnumerable<int>.Identity.
Mot cl� field
Le jeton field vous permet d��crire un corps d�accesseur de propri�t� sans d�clarer de champ de stockage explicite. Le jeton field est remplac� par un champ de stockage synth�tis� par un compilateur.
Par exemple, auparavant, si vous souhaitiez vous assurer qu�une propri�t� string ne pouvait pas �tre d�finie sur null, vous deviez d�clarer un champ de stockage et impl�menter les deux accesseurs.
Code : | S�lectionner tout |
1 2 3 4 5 6 | private string _msg; public string Message { get => _msg; set => _msg = value ?? throw new ArgumentNullException(nameof(value)); } |
Vous pouvez maintenant simplifier votre code pour :
Code : | S�lectionner tout |
1 2 3 4 5 | public string Message { get; set => field = value ?? throw new ArgumentNullException(nameof(value)); } |
Vous pouvez d�clarer un corps pour un accesseur ou les deux accesseurs d�une propri�t� stock�e dans un champ.
Il existe un risque de changement cassant ou de confusion lors de la lecture de code dans les types qui incluent �galement un symbole nomm� field. Vous pouvez utiliser @field ou this.field lever l�ambigu�t� entre le field mot cl� et l�identificateur, ou renommer le symbole actuel field pour fournir une meilleure distinction.
Le mot cl� contextuel field est en C# 13 comme fonctionnalit� d�aper�u.
Conversions de port�e implicites
C# 14 introduit la prise en charge de premi�re classe pour System.Span<T> et System.ReadOnlySpan<T> dans le langage. Cette prise en charge implique de nouvelles conversions implicites permettant une programmation plus naturelle avec ces types.
Span<T> et ReadOnlySpan<T> sont utilis�s de nombreuses fa�ons cl�s en C# et au runtime. Leur introduction am�liore les performances sans risquer la s�curit�. C# 14 reconna�t la relation et prend en charge certaines conversions entre ReadOnlySpan<T>, Span<T> et
T[]. Les types d��tendues peuvent �tre des r�cepteurs de m�thode d�extension, se combiner avec d�autres conversions et faciliter des sc�narios d�inf�rence de types g�n�riques.
Types g�n�riques non li�s et nameof
� partir de C# 14, l�argument � nameof peut �tre un type g�n�rique non li�. Par exemple, nameof(List<>

Param�tres lambda simples avec modificateurs
Vous pouvez ajouter des modificateurs de param�tre, tels que scoped, refin, out ou ref readonly � des param�tres d�expression lambda sans sp�cifier le type de param�tre :
Code : | S�lectionner tout |
1 2 3 | delegate bool TryParse<T>(string text, out T result); // ... TryParse<int> parse1 = (text, out result) => Int32.TryParse(text, out result); |
Auparavant, l�ajout de modificateurs n��tait autoris� que lorsque les d�clarations de param�tres incluaient les types des param�tres. La d�claration pr�c�dente n�cessite des types sur tous les param�tres :
Code : | S�lectionner tout |
TryParse<int> parse2 = (string text, out int result) => Int32.TryParse(text, out result);
Le params modificateur n�cessite toujours une liste de param�tres typ�e explicitement.
Plus de membres partiels
Vous pouvez maintenant d�clarer les constructeurs d�instances et les �v�nements en tant que membres partiels.
Les constructeurs partiels et les �v�nements partiels doivent inclure exactement une d�claration de d�finition et une d�claration d�impl�mentation.
Seule la d�claration d�impl�mentation d�un constructeur partiel peut inclure un initialiseur de constructeur : this() ou base(). Une seule d�claration de type partiel peut inclure la syntaxe du constructeur principal.
La d�claration d�impl�mentation d�un �v�nement partiel doit inclure les accesseurs add et remove. La d�claration de d�finition d�clare un �v�nement de type champ.
Affectation conditionnelle nulle
Les op�rateurs d�acc�s de membre conditionnel null, ?. et ?[], peuvent d�sormais �tre utilis�s sur le c�t� gauche d'une affectation ou d'une affectation compos�e.
Avant C# 14, vous devez v�rifier null une variable avant de l�affecter � une propri�t� :
Code : | S�lectionner tout |
1 2 3 4 | if (customer is not null) { customer.Order = GetCurrentOrder(); } |
Vous pouvez simplifier le code pr�c�dent � l�aide de l�op�rateur ?. :
Code : | S�lectionner tout |
customer?.Order = GetCurrentOrder();
Le c�t� droit de l�op�rateur = est �valu� uniquement lorsque le c�t� gauche n�est pas null. Si customer est nul, le code n�appelle pas GetCurrentOrder.
En plus de l�affectation, vous pouvez utiliser des op�rateurs d�acc�s membre conditionnel null avec des op�rateurs d�affectation compos�e (+= et -= d�autres). Cependant, l'incr�mentation et la d�cr�mentation, ++ et --, ne sont pas autoris�es.
Source : Microsoft
Et vous ?


Voir aussi :


Vous avez lu gratuitement 0 articles depuis plus d'un an.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer � vous proposer des publications.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer � vous proposer des publications.