IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Chroniqueur Actualit�s
    Avatar de Anthony
    Homme Profil pro
    R�dacteur technique
    Inscrit en
    Novembre 2022
    Messages
    1 864
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activit� : R�dacteur technique

    Informations forums :
    Inscription : Novembre 2022
    Messages : 1 864
    Par d�faut Microsoft annonce C# 12 : une meilleure productivit� des d�veloppeurs avec une syntaxe simplifi�e
    Microsoft pr�sente un aper�u de trois nouvelles fonctionnalit�s de C# 12, dont les constructeurs primaires pour les classes ou les structures et la d�finition d'alias pour tous les types

    Nous sommes ravis de pr�senter en avant-premi�re trois nouvelles fonctionnalit�s de C# 12 :
    • Constructeurs primaires pour les classes et les structures non enregistr�es
    • Utilisation d'alias pour n'importe quel type
    • Valeurs par d�faut pour les param�tres des expressions lambda

    Pour tester vous-m�me ces fonctionnalit�s, vous pouvez t�l�charger la derni�re version pr�liminaire de Visual Studio 17.6 ou la derni�re version pr�liminaire de .NET 8.

    Nom : csharp12.png
Affichages : 27455
Taille : 82,5 Ko

    Constructeurs primaires pour les classes et les structures non enregistr�es

    Les constructeurs primaires vous permettent d'ajouter des param�tres � la d�claration de la classe elle-m�me et d'utiliser ces valeurs dans le corps de la classe. Par exemple, vous pouvez utiliser les param�tres pour initialiser les propri�t�s ou dans le code des m�thodes et des accesseurs de propri�t�. Les constructeurs primaires ont �t� introduits pour les enregistrements en C# 9 dans le cadre de la syntaxe positionnelle des enregistrements. C# 12 les �tend � toutes les classes et structures.

    La syntaxe de base et l'utilisation d'un constructeur primaire sont les suivantes :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public class Student(int id, string name, IEnumerable<decimal> grades)
     
    {
     
        public Student(int id, string name) : this(id, name, Enumerable.Empty<decimal>()) { }
        public int Id => id;
        public string Name { get; set; } = name.Trim();
        public decimal GPA => grades.Any() ? grades.Average() : 4.0m;
    }

    Les param�tres du constructeur primaire de la classe Student ci-dessus sont disponibles dans tout le corps de la classe. L'une des fa�ons de les utiliser est d'initialiser les propri�t�s. Contrairement aux enregistrements, les propri�t�s ne sont pas automatiquement cr��es pour les param�tres du constructeur primaire dans les classes et les structures sans enregistrement. Cela s'explique par le fait que les classes et les structures non enregistr�es sont souvent plus complexes que les enregistrements, car elles combinent des donn�es et un comportement. Par cons�quent, elles ont souvent besoin de param�tres de construction qui ne doivent pas �tre expos�s. La cr�ation explicite de propri�t�s permet de savoir quelles donn�es sont expos�es, ce qui est conforme � l'utilisation courante des classes. Les constructeurs primaires permettent d'�viter de d�clarer des champs priv�s et de faire en sorte que des corps de constructeurs triviaux attribuent des valeurs de param�tres � ces champs.

    Lorsque les param�tres du constructeur primaire sont utilis�s dans des m�thodes ou des accesseurs de propri�t� (le param�tre grades dans la classe Student), ils doivent �tre captur�s afin de rester pr�sents apr�s l'ex�cution du constructeur. Ceci est similaire � la fa�on dont les param�tres et les variables locales sont captur�s dans les expressions lambda. Pour les param�tres du constructeur primaire, la capture est mise en �uvre en g�n�rant un champ de soutien priv� sur la classe ou la structure elle-m�me. Le champ a un nom "unspeakable", ce qui signifie qu'il n'entrera pas en collision avec d'autres noms et qu'il n'est pas �vident par r�flexion. R�fl�chissez � la mani�re dont vous affectez et utilisez les param�tres du constructeur primaire afin d'�viter le double stockage. Par exemple, name est utilis� pour initialiser l'auto-propri�t� Name, qui poss�de son propre champ d'appui. Si un autre membre faisait directement r�f�rence au param�tre name, ce dernier serait �galement stock� dans son propre champ de sauvegarde, ce qui entra�nerait une duplication regrettable.

    Une classe dot�e d'un constructeur primaire peut avoir des constructeurs suppl�mentaires. Ces derniers doivent utiliser un initialisateur this(...) pour appeler un autre constructeur sur la m�me classe ou structure. Cela permet de s'assurer que le constructeur primaire est toujours appel� et que toutes les donn�es n�cessaires � la cr�ation de la classe sont pr�sentes. Une structure poss�de toujours un constructeur sans param�tre. Le constructeur implicite sans param�tre n'utilise pas d'initialisateur this()pour appeler le constructeur primaire. Dans le cas d'une struct, vous devez �crire un constructeur sans param�tre explicite pour faire en sorte que le constructeur primaire soit appel�.

    Directives d'utilisation pour les types suppl�mentaires

    C# 12 �tend la prise en charge des directives d'utilisation � n'importe quel type. Voici quelques exemples :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    using Measurement = (string, int);
    using PathOfPoints = int[];
    using DatabaseInt = int?;

    Il est d�sormais possible de d�finir des alias pour presque tous les types. Vous pouvez cr�er des alias pour les types valeur nullable, mais vous ne pouvez pas cr�er d'alias pour les types r�f�rence nullable. Les tuples sont particuli�rement int�ressants car ils permettent d'inclure des noms et des types d'�l�ments :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    using Measurement = (string Units, int Distance);

    Vous pouvez utiliser des alias partout o� vous utiliseriez un type, par exemple :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    public void F(Measurement x)
     
    { }

    Les alias vous permettent de faire abstraction des types que vous utilisez et de donner des noms conviviaux � des noms g�n�riques longs ou confus. Cela peut faciliter la lecture de votre code.

    Valeurs par d�faut pour les expressions lambda

    C# 12 franchit une nouvelle �tape dans l'autonomisation des expressions lambda en vous permettant de sp�cifier des valeurs par d�faut pour les param�tres. La syntaxe est la m�me que pour les autres param�tres par d�faut :


    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    var addWithDefault = (int addTo = 2) => addTo + 1;
    addWithDefault(); // 3
    addWithDefault(5); // 6

    Comme pour les autres valeurs par d�faut, la valeur par d�faut sera �mise dans les m�tadonn�es et sera disponible par r�flexion en tant que DefaultValue du ParameterInfo de la propri�t� Method de l'expression lambda. Par exemple :


    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    var addWithDefault = (int addTo = 2) => addTo + 1;
    addWithDefault.Method.GetParameters()[0].DefaultValue; // 2

    Avant C# 12, vous deviez utiliser une fonction locale ou la difficile DefaultParameterValue de l'espace de noms System.Runtime.InteropServices pour fournir une valeur par d�faut aux param�tres de l'expression lambda. Ces approches fonctionnent toujours, mais elles sont plus difficiles � lire et ne sont pas coh�rentes avec les valeurs par d�faut des m�thodes. Avec les nouvelles valeurs par d�faut des lambdas, vous aurez un aspect coh�rent pour les valeurs des param�tres par d�faut des m�thodes, des constructeurs et des expressions lambda.

    Prochaines �tapes

    Nous esp�rons que vous t�l�chargerez l'aper�u et que vous d�couvrirez ces fonctionnalit�s. Nous exp�rimentons en C# 12 avec un num�ro d�di� pour chaque fonctionnalit�. Nous esp�rons que cela permettra de concentrer les commentaires et de faciliter l'adoption de ce que les autres disent.

    Nous attendons vos commentaires avec impatience !

    Source : Microsoft

    Et vous ?

    Que pensez-vous de ces nouvelles fonctionnalit�s de C# 12 ?

    Voir aussi

    Un premier aper�u des fonctionnalit�s de C# 11 est disponible avec la v�rification des param�tres null, et les motifs de liste

    Microsoft annonce la sortie de C# 10 dans le cadre de .NET 6 et Visual Studio 2022. C# 10 apporte des am�liorations aux expressions lambda et plusieurs fonctionnalit�s

    Une nouvelle Preview de C# 11 est disponible et s'accompagne d'une am�lioration de l'initialisation des objets, ainsi que du support math�matique g�n�rique
    Contribuez au club : corrections, suggestions, critiques, ... Contactez le service news et R�digez des actualit�s

  2. #2
    Communiqu�s de presse

    Femme Profil pro
    Traductrice Technique
    Inscrit en
    Juin 2023
    Messages
    2 513
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activit� : Traductrice Technique

    Informations forums :
    Inscription : Juin 2023
    Messages : 2 513
    Par d�faut Microsoft pr�sente un aper�u des nouvelles fonctionnalit�s de C# 12
    Microsoft pr�sente un aper�u des nouvelles fonctionnalit�s de C# 12, dont l'am�lioration de l'InlineArrayAttribute et de l'introduction de l'Interceptors.

    Visual Studio 17.7 Preview 3 et .NET 8 Preview 6 poursuivent l'�volution de C# 12. Cet aper�u comprend des fonctionnalit�s con�ues pour pr�parer le terrain en vue d'am�liorations futures des performances. L'acc�s ais� aux "Inline arrays" permettra aux biblioth�ques de les utiliser dans un plus grand nombre de cas, sans effort de votre part. Cet aper�u pr�sente une fonctionnalit� exp�rimentale appel�e "Interceptors", qui permet aux g�n�rateurs de r�acheminer le code, par exemple pour fournir une optimisation sp�cifique au contexte. Enfin, nameof est am�lior� pour fonctionner dans un plus grand nombre de cas.

    Vous pouvez obtenir C# 12 en installant la derni�re version de Visual Studio ou la derni�re version du SDK .NET. Pour d�couvrir les fonctionnalit�s de C# 12, vous devez d�finir la version linguistique de votre projet sur "preview" :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    <PropertyGroup>
       <LangVersion>preview</LangVersion>
    </PropertyGroup>
    nameof : Acc�s des membres � l'instance

    Le mot-cl� nameof fonctionne d�sormais avec les noms de membres, y compris les intiales, sur les membres statiques et dans les attributs :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    internal class NameOf
    {
        public string S { get; } = "";
        public static int StaticField;
        public string NameOfLength { get; } = nameof(S.Length);
        public static void NameOfExamples()
        {
            Console.WriteLine(nameof(S.Length));
            Console.WriteLine(nameof(StaticField.MinValue));
        }
        [Description($"String {nameof(S.Length)}")]
        public int StringLength(string s)
        { return s.Length; }
    }
    Inline arrays ou tableaux en ligne

    L'InlineArrayAttribute a �t� introduit dans le moteur d'ex�cution lors d'un pr�c�dent aper�u de .NET 8. Il s'agit d'une fonctionnalit� avanc�e qui sera principalement utilis�e par le compilateur, les biblioth�ques .NET et quelques autres biblioth�ques. L'attribut identifie un type qui peut �tre trait� comme une s�quence contigu� de primitives pour des donn�es en ligne indexables ou d�coupables efficaces, s�curis�es en termes de type et de d�passement de capacit�. Les biblioth�ques .NET am�liorent les performances de vos applications et outils utilisant des tableaux en ligne.

    Le compilateur cr�e diff�rentes IL pour acc�der aux tableaux en ligne. Il en r�sulte quelques restrictions, telles que l'impossibilit� de prendre en charge les mod�les de liste. Dans la plupart des cas, vous acc�dez aux tableaux en ligne de la m�me mani�re qu'aux autres tableaux. La diff�rence d'interface utilisateur permet de gagner en performance sans modifier le code :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    private static void InlineArrayAccess(Buffer10<int> inlineArray)
    {
        for (int i = 0; i < 10; i++)
        {
            inlineArray[i] = i * i;
        }
        foreach (int i in inlineArray)
        {
            Console.WriteLine(i);
        }
    }
    La plupart des gens utiliseront des tableaux en ligne plut�t que d'en cr�er. Mais il est bon de comprendre comment les choses fonctionnent. Les tableaux en ligne sont rapides parce qu'ils reposent sur une disposition exacte d'une longueur sp�cifi�e. Un tableau en ligne est un type comportant un seul champ et marqu� par l'attribut InlineArrayAttribute qui sp�cifie la longueur du tableau. Dans le type utilis� dans l'exemple pr�c�dent, l'ex�cution cr�e un espace de stockage pour exactement dix �l�ments dans Buffer10<T> en raison du param�tre d'attribut :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    [System.Runtime.CompilerServices.InlineArray(10)]
    public struct Buffer10<T>
    {
        private T _element0;
    }
    Interceptors ou Intercepteurs

    Cet aper�u introduit une fonctionnalit� exp�rimentale appel�e interceptors. Elle est destin�e � des sc�narios avanc�s, permettant notamment d'am�liorer la compilation anticip�e (ahead of time-AOT). En tant que partie exp�rimentale de .NET 8, elle peut �tre modifi�e ou supprim�e dans une version future. Il ne doit donc pas �tre utilis� dans un contexte de production.

    Les intercepteurs permettent de r�acheminer des appels de m�thodes sp�cifiques vers un code diff�rent. Les attributs sp�cifient l'emplacement r�el du code source, de sorte que les intercepteurs ne conviennent g�n�ralement qu'aux g�n�rateurs de sources.

    Les intercepteurs �tant une fonctionnalit� exp�rimentale, vous devrez les activer explicitement dans votre fichier de projet :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    <PropertyGroup>
       <Features>InterceptorsPreview<Features>
    </PropertyGroup>
    Les intercepteurs permettent de cr�er des mod�les de code int�ressants. En voici quelques exemples :

    • Les appels connus au moment de la compilation, comme Regex.IsMatch(@"a+b+") avec un motif constant, peuvent �tre intercept�s afin d'utiliser un code g�n�r� de mani�re statique pour une optimisation qui est favorable � l'AOT.
    • Les appels ASP.NET Minimal API comme app.MapGet("/products", handler: (int? page, int? pageLength, MyDb db) => { ... }) peuvent �tre intercept�s pour enregistrer un thunk g�n�r� statiquement qui appelle directement le handler de l'utilisateur, en �vitant l'allocation et l'indirection.
    • Dans la vectorisation, o� les boucles foreach contiennent des appels � des m�thodes utilisateur, le compilateur peut r��crire le code pour v�rifier et utiliser les �l�ments intrins�ques pertinents au moment de l'ex�cution, mais revenir au code d'origine si ces �l�ments intrins�ques ne sont pas disponibles.
    • R�solution statique du graphe de d�pendance pour l'injection de d�pendance, o� provider.Register<MyService>() peut �tre intercept�.
    • Les appels aux fournisseurs de requ�tes pourraient �tre intercept�s pour offrir une traduction dans un autre langage (par exemple SQL) au moment de la compilation, plut�t que d'�valuer les arbres d'expression � traduire au moment de l'ex�cution.
    • Les s�rialiseurs pourraient g�n�rer une (d�)s�rialisation sp�cifique au type en fonction du type concret des appels tels que Serialize<MyType>(), le tout au moment de la compilation.


    La plupart des programmeurs n'utiliseront pas directement les intercepteurs, mais Microsoft esp�re qu'ils joueront un r�le important dans leur d�marche visant � acc�l�rer l'ex�cution de vos applications et � faciliter leur d�ploiement. Les intercepteurs devraient rester exp�rimentaux dans la version C# 12/.NET 8 et pourraient �tre inclus dans une future version de C#.


    Source : Microsoft

    Et vous ?

    Que pensez-vous de ces nouvelles fonctionnalit�s de C# 12 ?

    Voir aussi :

    Augmentation de la popularit� de C#, selon l'indice Tiobe
    Qui lui a observ� une croissance de pr�s de 2% au cours des 12 derniers mois, tandis que C a perdu pratiquement autant en popularit�


    Un premier aper�u des fonctionnalit�s de C# 11 est disponible avec la v�rification des param�tres null,
    Et les motifs de liste


    Microsoft pr�sente un aper�u de trois nouvelles fonctionnalit�s de C# 12
    Dont les constructeurs primaires pour les classes ou les structures et la d�finition d'alias pour tous les types

  3. #3
    Communiqu�s de presse

    Femme Profil pro
    Traductrice Technique
    Inscrit en
    Juin 2023
    Messages
    2 513
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activit� : Traductrice Technique

    Informations forums :
    Inscription : Juin 2023
    Messages : 2 513
    Par d�faut Microsoft annonce C# 12 : une meilleure productivit� des d�veloppeurs
    Microsoft annonce C# 12 : une meilleure productivit� des d�veloppeurs avec une syntaxe simplifi�e et une ex�cution plus rapide.

    C# 12 est disponible ! C# 12 am�liore la productivit� des d�veloppeurs gr�ce � une syntaxe simplifi�e et � une ex�cution plus rapide. Voici quelques fonctionnalit�s et am�liorations.

    Vous pouvez obtenir C# 12 en t�l�chargeant .NET 8, la derni�re version de Visual Studio ou le kit de d�veloppement C# de Visual Studio Code.

    Pour vos projets existants, vous devrez �galement indiquer que vous souhaitez changer de version linguistique. Vous pouvez modifier votre version linguistique en rempla�ant votre TargetFramework par .NET 8 :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    <Project Sdk="Microsoft.NET.Sdk">
        <PropertyGroup>
            <TargetFramework>net8.0</TargetFramework>
    ...
        </PropertyGroup>
    </Project>

    Simplification du code

    Chaque version de C# vous aide � �crire un meilleur code, un code plus simple qui exprime mieux votre intention. Par rapport au code que vous avez �crit pr�c�demment, la nouvelle approche est aussi rapide, voire plus rapide, et comporte le m�me nombre d'allocations, voire moins. Vous pouvez adopter ces nouvelles fonctionnalit�s en toute confiance. L'un des objectifs de conception des nouvelles fonctionnalit�s est de s'assurer que leur adoption ne d�grade pas les performances.

    C# 12 introduit des expressions de collection, des constructeurs primaires pour toutes les classes et les structures, une syntaxe permettant d'aliaser n'importe quel type et des param�tres par d�faut pour les expressions lambda qui simplifient votre code.

    Expressions de collection

    Avant C# 12, la cr�ation de collections n�cessitait une syntaxe diff�rente selon les sc�narios. L'initialisation d'une List<int> n�cessitait une syntaxe diff�rente de celle d'un int[] ou d'un Span<int>. Voici quelques-unes des fa�ons dont les collections peuvent �tre cr��es :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    int[] x1 = new int[] { 1, 2, 3, 4 };
    int[] x2 = Array.Empty<int>();
    WriteByteArray(new[] { (byte)1, (byte)2, (byte)3 });
    List<int> x4 = new() { 1, 2, 3, 4 };
    Span<DateTime> dates = stackalloc DateTime[] { GetDate(0), GetDate(1) };
    WriteByteSpan(stackalloc[] { (byte)1, (byte)2, (byte)3 });
    Les expressions de collection constituent une syntaxe unifi�e :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    int[] x1 = [1, 2, 3, 4];
    int[] x2 = [];
    WriteByteArray([1, 2, 3]);
    List<int> x4 = [1, 2, 3, 4];
    Span<DateTime> dates = [GetDate(0), GetDate(1)];
    WriteByteSpan([1, 2, 3]);
    Non seulement vous pouvez utiliser une syntaxe unique, mais le compilateur cr�e un code rapide pour vous. Dans de nombreux cas, le compilateur d�finit la capacit� de la collection et �vite de copier les donn�es.

    Et comme si cela ne suffisait pas, vous pouvez utiliser l'op�rateur new spread pour inclure les �l�ments d'une ou plusieurs collections ou expressions �num�rables dans une expression de collection :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    int[] numbers1 = [1, 2, 3];
    int[] numbers2 = [4, 5, 6];
    int[] moreNumbers = [.. numbers1, .. numbers2, 7, 8, 9];
    // moreNumbers contains [1, 2, 3, 4, 5, 6, 7, 8, ,9];
    L'impl�mentation de toute expression d'�talement est optimis�e et sera souvent meilleure que le code que vous pourriez �crire pour combiner des collections.

    Comme pour de nombreuses nouvelles fonctionnalit�s de C#, les analyseurs peuvent vous aider � v�rifier la nouvelle fonctionnalit� et � mettre � jour votre code :

    Nom : 1.png
Affichages : 22449
Taille : 152,0 Ko

    Constructeurs primaires sur n'importe quelle classe ou structure

    C# 12 �tend les constructeurs primaires � toutes les classes et structures, et pas seulement aux enregistrements. Les constructeurs primaires vous permettent de d�finir les param�tres du constructeur lors de la d�claration de la classe :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    public class BankAccount(string accountID, string owner)
    {
        public string AccountID { get; } = accountID;
        public string Owner { get; } = owner;
     
        public override string ToString() => $"Account ID: {AccountID}, Owner: {Owner}";
    }
    Les utilisations les plus courantes d'un param�tre de constructeur primaire sont les suivantes :

    • Comme argument � l'invocation du constructeur base().
    • Pour initialiser un champ membre ou une propri�t�.
    • Faire r�f�rence au param�tre du constructeur dans un membre de l'instance.
    • Pour supprimer les �l�ments parasites dans l'injection de d�pendances.


    Vous pouvez consid�rer qu'un param�tre de constructeur primaire est un param�tre dont la port�e s'�tend � l'ensemble de la d�claration de la classe.

    Vous pouvez ajouter des constructeurs primaires � n'importe quel type : classe, structure, classe d'enregistrement et structure d'enregistrement. Lorsqu'ils sont utilis�s pour les types classe et structure, les param�tres des constructeurs primaires sont pris en compte dans l'ensemble de la d�finition de la classe ou de la structure. Vous pouvez utiliser les param�tres pour initialiser des champs ou des propri�t�s, ou dans le corps d'autres membres. Lorsqu'ils sont utilis�s sur des types d'enregistrement, le compilateur g�n�re une propri�t� publique pour chaque param�tre de constructeur primaire. Ces propri�t�s sont simplement l'un des nombreux membres g�n�r�s automatiquement pour les types d'enregistrements.

    Alias de n'importe quel type

    L'alias de type est un moyen pratique de supprimer les signatures de type complexes de votre code. � partir de C# 12, des types suppl�mentaires sont valides pour l'utilisation des directives d'alias. Par exemple, ces alias ne sont pas valables dans les versions ant�rieures de C# :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    using intArray = int[]; // Array types.
    using Point = (int x, int y);  // Tuple type
    using unsafe ArrayPtr = int*;  // Pointer type (requires "unsafe")
    Comme les autres alias d'utilisation, ces types peuvent �tre utilis�s au d�but d'un fichier et dans les d�clarations d'utilisation globales.

    Param�tres lambda par d�faut

    � partir de C# 12, vous pouvez d�clarer des param�tres par d�faut dans les expressions lambda :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    var IncrementBy = (int source, int increment = 1) => source + increment;
     
    Console.WriteLine(IncrementBy(5)); // 6
    Console.WriteLine(IncrementBy(5, 2)); // 7
    Les param�tres lambda par d�faut permettent au code appelant de ne pas passer de valeurs et vous permettent d'ajouter des param�tres � des expressions lambda existantes sans interrompre le code appelant. Cela simplifie l'acc�s aux expressions lambda de la m�me mani�re que les param�tres par d�faut des m�thodes simplifient l'appel des m�thodes.

    Acc�l�rer votre code

    Microsoft continue � am�liorer votre capacit� � travailler avec la m�moire brute afin d'am�liorer les performances des applications.

    Les am�liorations apport�es � C# au fil des ans sont importantes, que vous les utilisiez directement ou non. La plupart des applications deviennent plus rapides parce que le moteur d'ex�cution .NET et d'autres biblioth�ques tirent parti de ces am�liorations. Bien entendu, si votre application utilise des tampons de m�moire dans des chemins d'acc�s rapides, vous pouvez �galement tirer parti de ces fonctionnalit�s. Votre application n'en sera que plus rapide.

    En C# 12, on a ajout� les param�tres ref readonly et les tableaux inline.

    Param�tres ref readonly

    L'ajout des param�tres ref readonly permet de combiner le passage de param�tres par r�f�rence ou par valeur. L'argument d'un param�tre ref readonly doit �tre une variable. Comme pour les arguments ref et out, l'argument ne doit pas �tre une valeur litt�rale ou une constante. Un argument litt�ral g�n�re un avertissement et le compilateur cr�e une variable temporaire. Comme les param�tres in, un param�tre ref readonly ne peut pas �tre modifi�. Une m�thode doit d�clarer des param�tres ref readonly lorsqu'elle ne modifiera pas l'argument, mais qu'elle a besoin de son emplacement en m�moire.

    Tableaux en ligne

    Les tableaux en ligne constituent un moyen s�r de travailler avec des tampons de m�moire. Un tableau en ligne est un type de tableau de longueur fixe bas� sur une structure. Vous avez pu manipuler un bloc de m�moire en utilisant le stockage stackalloc ou les pointeurs. Mais ces techniques n�cessitaient que votre assemblage permette un code non s�curis�. Lorsque votre application doit utiliser un bloc de m�moire pour stocker un tableau de structures, vous pouvez d�sormais d�clarer un type de tableau en ligne. Ce type repr�sente un tableau de taille fixe. Vous pouvez les utiliser dans du code s�r et am�liorer les performances de votre application lors de la manipulation de tampons.

    Aider Microsoft � aller plus vite

    Parfois des fonctionnalit�s � C# sont ajout�es � titre exp�rimental ou pour rendre le d�veloppement de C# ou de .NET plus efficace. C# 12 apporte deux de ces fonctionnalit�s : l'attribut exp�rimental et les intercepteurs.

    Attribut exp�rimental

    Microsoft place parfois des fonctionnalit�s dans les versions publi�es de .NET ou de C# pour obtenir un retour d'information ou parce que la fonctionnalit� ne peut pas �tre r�alis�e en un seul cycle. Dans ces cas, il est claire que Microsoft n'est pas encore engag� dans la fonctionnalit� ou l'impl�mentation. Ils ont ajout� l'attribut System.Diagnostics.CodeAnalysis.ExperimentalAttribute pour mieux clarifier ces cas.

    Lorsque le code utilise des types ou des membres qui sont exp�rimentaux, une erreur se produit � moins que le code appelant ne soit �galement marqu� comme exp�rimental. Chaque utilisation de ExperimentalAttribute inclut un identifiant de diagnostic, qui vous permet de supprimer l'erreur pour des fonctionnalit�s exp�rimentales individuelles par une option explicite du compilateur ou #pragma afin que vous puissiez explorer une fonctionnalit� exp�rimentale.

    Les types, les membres et les assemblages peuvent �tre marqu�s avec l'attribut ExperimentalAttribute. Si un type est marqu� comme exp�rimental, tous ses membres sont consid�r�s comme exp�rimentaux. Si un assemblage ou un module est marqu� comme exp�rimental, tous les types qu'il contient sont marqu�s comme exp�rimentaux.

    Il est vivement recommand� aux auteurs de biblioth�ques qui d�pendent d'un �l�ment dot� d'un attribut Experimental de marquer �galement tout le code qui l'utilise avec l'attribut ExperimentalAttribute. Il est �galement encourag� pour les auteurs de biblioth�ques � utiliser l'attribut ExperimentalAttribute s'ils ont des fonctionnalit�s exp�rimentales dans leurs biblioth�ques.

    Intercepteurs

    Les intercepteurs sont une fonctionnalit� exp�rimentale, disponible en mode preview avec C# 12. Cette fonctionnalit� peut faire l'objet de modifications ou de suppressions dans une version ult�rieure. Par cons�quent, elle n'est pas recommand�e pour les applications de production ou publi�es. Si vous utilisez des intercepteurs, marquez votre biblioth�que avec l'attribut ExperimentalAttribute.

    Les intercepteurs permettent de rediriger les appels de m�thodes. Par exemple, cela permettrait � une version optimis�e d'une m�thode g�n�r�e pour des param�tres sp�cifiques de remplacer une m�thode g�n�ralis�e moins efficace.

    Prochaines �tapes

    C# 12 n'est qu'une partie de l'excitante version de .NET 8. Pour en savoir plus sur les autres fonctionnalit�s, consultez l'article sur .NET 8.

    T�l�chargez .NET 8, Visual Studio 2022 17.8 et d�couvrez C# 12 !

    Source : Microsoft

    Et vous ?

    Quel est votre avis sur le sujet ?

    Voir aussi :

    Microsoft annonce .NET 8 avec des am�liorations en mati�re de performances, de stabilit� et de s�curit�, ainsi que des am�liorations de la plateforme et des outils pour accro�tre la productivit�

    Microsoft pr�sente un aper�u des nouvelles fonctionnalit�s de C# 12, dont l'am�lioration de l'InlineArrayAttribute et de l'introduction d'Interceptors

    Microsoft pr�sente un aper�u de trois nouvelles fonctionnalit�s de C# 12, dont les constructeurs primaires pour les classes ou les structures et la d�finition d'alias pour tous les types

Discussions similaires

  1. Build 2020 : Microsoft annonce .NET MAUI, une �volution de Xamarin.Forms,
    Par Bill Fassinou dans le forum G�n�ral Dotnet
    R�ponses: 7
    Dernier message: 03/07/2023, 07h26
  2. R�ponses: 0
    Dernier message: 12/06/2023, 11h07
  3. R�ponses: 15
    Dernier message: 19/02/2022, 10h38
  4. R�ponses: 6
    Dernier message: 02/12/2020, 07h45
  5. R�ponses: 14
    Dernier message: 31/05/2020, 19h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo