Je vois que les expressions lambda sont devenues un outil très utile à certains moments du langage. Je les ai beaucoup utilisés et la plupart du temps ils sont très bien et rendent le code plus court et peut-être plus clair.quand utiliser ou non Lambda Expressions
Maintenant .. J'en ai vu, je dirais l'usage excessif d'entre eux. Certaines personnes les aiment tellement qu'ils essaient de les utiliser partout où ils peuvent. Parfois, le code C# ressemble à un langage fonctionnel.
D'autres facteurs contre sont le coût en utilisant la réflexion par lambda et qui ne sont pas favorables au débogage. Je voudrais entendre des opinions sur comment bien et comment le code clair est d'utiliser plus ou moins les expressions lambda.
(ce n'est pas le meilleur exemple, mais disons que ce fut le déclencheur)
je rédigeais le code suivant. L'utilisation du delegate { return null; }
m'aide à éviter de devoir demander si l'événement est nul ou pas à chaque fois que je dois l'utiliser.
public delegate ContactCellInfo.Guest AddGuest();
public event AddGuest GuestRequest = delegate { return null;}
Im en utilisant ReSharper et le ReSharper sage (même quelques fois il mange la mémoire literaly) m'a fait la suggestion suivante
public delegate ContactCellInfo.Guest AddGuest();
public event AddGuest GuestRequest =() => null;
À mon point de vue, le code à l'aide du délégué semble plus claire. Je ne suis pas contre l'expression de Lamdba j'aimerais juste entendre quelques conseils sur comment et quand les utiliser.
Juste un conseil: Vous n'avez pas besoin de retourner la valeur null de votre délégué. Un délégué vide fonctionnera très bien. –
"le coût en utilisant la réflexion par lambda": il n'y a pas de coût. Le lambda dans votre code est * exactement * équivalent à la méthode anonyme. (Lambdas peut aussi être utilisé comme expression au sens de LINQ, mais il n'y a pas de point de comparaison dans ce cas car les méthodes anonymes ne peuvent pas être utilisées comme expressions.) – itowlson
J'utilise le délégué vide, mais dans ce cas il donne une erreur " Tous les chemins de code ne renvoient pas une valeur dans la méthode anonyme ... " – jmayor