• [^] # Re: Ca dénonce grave

    Posté par (site web personnel) . En réponse au journal Java 7 est dispo !. Évalué à 1.

    Bon, on va rentrer dans le troll :)

    J'aime le troll =)

    On sait pas ce qu'on manipule, comme en VB \o/

    Le compilateur, lui il sait, contrairement au compilateur VB. Et l'IDE aussi, donc toi aussi :-p

    méthodes d'extension Je ne vois pas vraiment d'utilisation IRL, ça peut être aisément traité avec un simple héritage/surcharge de méthode.

    Ben justement, ca permet d'étendre des types dont tu ne peux pas hériter ou dont tu n'as pas envie d'hériter. T'as jamais eu envie d'ajouter une méthode à la classe object et que toutes les classes en profite ?

    Intérêt hormis pour faire un truc du genre de Linq ?

    Ca sert à passer du code simplement en paramètre, exemple avec 2 utilisations de callback :

    ...
    doStuffAsync(42, res => Console.WriteLine(res));
    ...
    public void doStuffAsync(int p1, Action<int> callback)
    {
     ThreadPool.QueueuserWorkItem(() => {
     var res = doHardWorkOnP1(p1);
     callback(p1);
     });
    }
    

    idem, il y a plein de beaux articles dans des blogs techniques, mais est-ce vraiment utilisé sur des projets C# ?

    Oui, pleins de projets l'utilise. ca permet par exemple d'écrire quelque chose comme ca :

    string int ValeurMetier{get;set;}
    ...
    RaisePropertyChanged(m => m.ValeurMetier);
    ...
    

    Et voilà, j'ai une méthode générique RaisePropertyChanged qui va lever un événément indiquant que la propriété ValeurMetier a changé. Sans l'arbre d'expression, t'aurais dû écrire quelque chose comme ca :

    RaisePropertyChanged("ValeurMetier");
    

    Pas de typage : erreur possible, pas de refactoring, etc.

    Sinon l'arbre d'expression c'est largement utilisé en interne par les compilos/libs .NET : Linq s'appui intégralement dessus, les languages dynamiques comme IronPython et IronRuby également.