Un aperçu des dernières fonctionnalités C# 11 à venir en novembre avec .NET 7 — Visual Studio Magazine

Nouvelles

Un aperçu des dernières fonctionnalités C# 11 à venir en novembre avec .NET 7

L’arrivée avec .NET 7 début novembre apportera de nombreuses nouvelles fonctionnalités dans C# 11, la dernière itération du langage de programmation phare de Microsoft.

Hier, en mettant en évidence les nouvelles fonctionnalités de C # 11 fournies avec la récente version de Visual Studio 2022 v17.3, Microsoft s’est concentré sur les mathématiques génériques, ainsi que sur les améliorations de l’initialisation des objets via les membres requis et ref des champs.

D’autres nouvelles fonctionnalités, notamment les littéraux de chaîne bruts, les attributs génériques, etc., ont été déployées avec VS 2022 v17.1 et VS 2022 v17.2.

C# 11 Travailler sur GitHub
[Click on image for larger view.] C# 11 Travailler sur GitHub (source : Microsoft).

“Nous avons tendance, si nous le pouvons, à prendre certaines des fonctionnalités les plus importantes et à les répartir sur plusieurs versions pour nous assurer que nous obtenons d’abord les scénarios à fort impact, que nous recevons des commentaires en cours de route, etc.”, a expliqué Microsoft. Mads Torgersen dans une vidéo publiée plus tôt ce mois-ci et intitulée “C# 11 : The Highlights”.

Mathématiques génériques
Le dégoulinant avec la version v17.3 est un calcul générique, qui est pris en charge par ces fonctionnalités de langage :

  • static virtual membres dans les interfaces
  • opérateurs définis par l’utilisateur cochés
  • opérateurs de quart détendus
  • opérateur de décalage à droite non signé

Les mathématiques génériques utilisent une nouvelle fonctionnalité appelée virtuels statiques dans les interfaces qui permet aux développeurs .NET d’exploiter des API statiques à partir de code générique. Par exemple, l’utilisation d’opérateurs sur des types génériques permet aux développeurs de limiter l’entrée à des types semblables à des nombres, n’étant plus obligés d’écrire ou de maintenir de nombreuses implémentations similaires afin de prendre en charge plusieurs types. Pour un autre exemple, les développeurs ont accès à tous leurs opérateurs préférés et peuvent les utiliser à partir de contextes génériques.

“Cette fonctionnalité permet aux interfaces de déclarer des opérateurs ou d’autres méthodes statiques”, a déclaré Bill Wagner de Microsoft dans un article du mois d’août. 22 articles de blog. “Les classes qui implémentent une interface doivent fournir l’implémentation de static abstract méthodes, tout comme les autres méthodes déclarées dans les interfaces. Le compilateur résout les appels à static méthodes, y compris les opérateurs, au moment de la compilation. Il n’y a pas de mécanisme de distribution d’exécution comme c’est le cas avec les méthodes d’instance. La documentation fournit plus de détails sur les règles linguistiques spécifiques requises pour que cette fonctionnalité fonctionne.”

Wagner a également noté: “Vous n’utiliserez ces fonctionnalités directement que dans des scénarios avancés, tels que l’écriture d’algorithmes mathématiques qui fonctionnent sur plusieurs types de nombres.”

C’est exactement ce que Torgersen a fait dans sa démo vidéo qui présentait un “algorithme numérique”. Il a déclaré: “Nous avons un support numérique décent, mais lorsqu’il s’agit d’abstraction sur tout ce qui est numérique, cela a toujours été un problème.” En parcourant sa démonstration de code, il a noté que “le but ici est d’avoir un algorithme numérique, puis de réfléchir à quoi cela ressemblerait-il si je devais prendre cet algorithme numérique et le résumer pour qu’il soit applicable à plus de types de nombres plutôt que d’avoir pour copier/coller mon code pour différents types de types numériques et ainsi de suite comme vous devez le faire aujourd’hui.”

Améliorations de l’initialisation d’objet
Une grande amélioration ici vient via les membres requis, qui permettent aux développeurs d’écrire des types de classe et de structure qui obligent les appelants à définir certaines propriétés. Les codeurs peuvent ajouter un required modificateur aux propriétés et aux champs pour s’assurer que ces valeurs sont initialisées dans les constructeurs et les appelants.

“La required modificateur indique que le champ ou propriété Il est appliqué à doit être initialisé par tous les constructeurs ou à l’aide d’un initialiseur d’objet », indique la documentation Microsoft. « Toute expression qui initialise une nouvelle instance du type doit initialiser tous les membres requis.

Torgersen a expliqué la fonctionnalité dans un scénario de démonstration de codage d’une classe de personne où il a abandonné l’ancienne méthode qui nécessitait plusieurs constructeurs avec différents paramètres afin de contrôler la façon dont une classe de personne pouvait être construite, plutôt en utilisant un constructeur par défaut, puis en utilisant des initialiseurs d’objet pour créer nouveaux objets.

“À bien des égards, c’est une excellente expérience à la fois pour maintenir les hiérarchies de classes et pour l’utilisateur final, mais il y a une chose que les constructeurs ne peuvent pas faire, c’est que cela ne peut pas me faire donner des valeurs pour certains propriétés, a déclaré Torgersen. “C’est toujours facultatif. Tout est facultatif, et c’est un problème parce que vous ne voulez pas laisser le prénom et le nom avec une valeur par défaut qui est null, ce qui va en fait à l’encontre des types non nullables. C’est en fait ce que cela C’est comme, ‘hé, vous laissez null là-dedans. Vos constructeurs n’initialisent pas cela.’ ”

Dans la démo, en essayant différentes choses, Torgersen a montré comment une personne LastName La propriété peut finir par être nulle si le développeur oublie de fournir une valeur. “Ce que nous voulons vraiment, c’est pouvoir dire : ‘Je promets que je ferai en sorte que l’appelant du constructeur initialise cette propriété.’ C’est obligatoire, et c’est ce que nous ajoutons ici en C# 11. l’appelant va le fournir, et en effet, il va le faire en vous donnant une erreur jusqu’à ce que vous le fassiez.

Wagner a également utilisé une classe de personne comme exemple pour expliquer les membres requis dans son message cette semaine. Les appelants doivent utiliser des initialiseurs d’objets pour définir les valeurs des FirstName et LastName propriété. Mais avant la version 17.3, le compilateur ne pouvait pas obliger les appelants à définir ces propriétés. Un constructeur qui nécessite des paramètres est le seul moyen de s’assurer que l’utilisateur définit le FirstName et LastName Propriétés. Les membres requis indiquent au compilateur et aux appelants qu’ils doivent définir ces propriétés.”

Toutes les fonctionnalités jusqu’à présent
Voici la liste des nouvelles fonctionnalités C# 11 introduites avec les dernières versions mineures de Visual Studio 2022 :

  • Visual Studio 2022 17.3 :

  • Visual Studio 2022 v17.2 :

  • Visual Studio 2022 version 17.1 :

Pour essayer les nouvelles fonctionnalités, les développeurs doivent se rappeler d’activer les fonctionnalités d’aperçu dans les projets Visual Studio.

“Cet aperçu de Visual Studio nous rapproche de l’ensemble complet de fonctionnalités pour C# 11”, a déclaré Wagner. “Nous avons continué à investir dans plusieurs thèmes dans cette version. Nous avons apporté des corrections en cours de route en fonction des commentaires que vous nous avez déjà donnés. C’est maintenant le moment idéal pour télécharger l’aperçu, essayer toutes les nouvelles fonctionnalités et faites-nous part de vos commentaires. Nous écoutons et effectuons les dernières mises à jour pour C# 11 et .NET 7.”

A propos de l’auteur

David Ramel est éditeur et rédacteur pour Converge360.

.

Leave a Comment