Developpez.com - Rubrique .NET

Le Club des Développeurs et IT Pro

Apprendre les nouveautés de C# 6 et C# 7

Un tutoriel de Aymen TROUDI

Le 2017-08-03 16:07:09, par Community Management, Community Manager
Chers membres du club,

J'ai le plaisir de vous présenter ce tutoriel de Aymen TROUDI pour vous apprendre les nouveautés de C# 6 et C# 7.

Lors des TechDays 2015, Microsoft a présenté une nouvelle version 6 de son langage phare C#. À peine un an après, son successeur C# 7 prépare son arrivée. Chacune de ces versions apporte un ensemble de facilités aux développeurs.

À travers ce tutoriel, nous passons en revue l'ensemble des nouveautés apportées par C# 6 et celles attendues par C# 7. Chaque fonctionnalité sera décortiquée avec des exemples illustratifs.
Bonne lecture.

Retrouvez les meilleurs cours et tutoriels pour apprendre la programmation Dotnet.
  Discussion forum
4 commentaires
  • François DORIN
    Expert éminent sénior
    Bonjour,

    Bon article ! Ca fait du bien d'avoir des petites synthèses comme cela de temps en temps.

    Il est juste dommage que certains codes sources donnés en exemple soient erronés.

    Par exemple : dans la section II-C Initialisation des collections :

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    // Avant C# 6
    
    // initialisation d'une collection de personnes
    var oldPers = new List<Person>()
    {
        new Person("Walter", "White"),
        new Person("Jon", "Snow")
    };
    
    // Avec C# 6
    
    // définition de méthodes d'extensions « Add »
    
    // 1re méthode d'extension « Add » acceptant deux paramètres « string »
    public static void Add(this List<Person> persons, string first, string last)
    {
        persons.Add(new Person(first, last));
    }
    
    // 2e méthode d'extension « Add » acceptant un paramètre « int »
    public static void Add(this List<Person> persons, int nbr)
    {
        for (var index = 0; index < nbr; index++)
        {
            persons.Add(new Person("F_" + index, "L_" + index));
        }
    }
    
    // initialisation d'une collection de personnes
    var newPers = new List<Person>()
    {
        { "Walter", "White" },
        { "Jon", "Snow" },
        { 2 },
    };
    Les corrections sont en rouge.

    Ensuite, même si je comprends que les codes données sont juste là pour donner le syntaxe, il serait bon de rester cohérent dans le code fourni. Ici, on déclare une méthode d'extension à côté d'attribut, ce qui n'est pas possible ! Car une méthode d'extension nécessite une classe statique, tandis que les attributs nécessitent une classe non statique. Il faudrait alors utiliser des attributs de classe.
  • François DORIN
    Expert éminent sénior
    Merci pour le retour. Je comprends mieux maintenant l'origine de l'erreur. En temps normal, je n'aurais rien dit, car c'est du chipotage, mais l'erreur portant précisément sur les éléments syntaxiques en question...
  • Noxen
    Membre chevronné
    Code :
    1
    2
    3
    4
    5
    var oldPers = new List<Person>()
    {
        new Person("Walter", "White"),
        new Person("Jon", "Snow")
    };
    Tant qu'on en est de chipoter, avec les initialisateurs d'objets ou de collections on n'a pas besoin des parenthèses du constructeur sans paramètre (d'ailleurs ReSharper le signale comme code redondant).

    Code :
    1
    2
    3
    4
    5
    6
    // C'est correct sans les parenthèses du new List<T>()
    var oldPers = new List<Person>
    {
        new Person("Walter", "White"),
        new Person("Jon", "Snow")
    };
  • atr.net
    Nouveau Candidat au Club
    Merci François pour ton commentaire et d'avoir remarqué les erreurs qui sont passées entre les mailles du filet malgré les relectures depuis la première publication.
    En cause le plugin utilisé pour faire la coloration syntaxique dans wordpress qui remplace les '()' par un ';' en fonction des actions d'édition (Preview ou Save).
    J'espère que les modérateurs auront le temps et pourront corriger ces petites erreurs.
    Pour info, le code (avant publication) a été testé sous VS 15/17 (R#) et Linqpad 5.
    Cordialement,
    Aymen

    Envoyé par François DORIN

    Bon article ! Ca fait du bien d'avoir des petites synthèses comme cela de temps en temps.
    Il est juste dommage que certains code source donnée en exemple soient erronés.