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.
[^] # Re: Ca dénonce grave
Posté par TImaniac (site web personnel) . En réponse au journal Java 7 est dispo !. Évalué à 1.
J'aime le troll =)
Le compilateur, lui il sait, contrairement au compilateur VB. Et l'IDE aussi, donc toi aussi :-p
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 ?
Ca sert à passer du code simplement en paramètre, exemple avec 2 utilisations de callback :
Oui, pleins de projets l'utilise. ca permet par exemple d'écrire quelque chose comme ca :
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 :
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.