Quelqu'un peut-il me donner une bonne explication sur l'utilisation de Lambda et me donner un bon exemple. Je l'ai vu mais je ne sais pas ce que c'est ou ce qu'il fait.
Réponses
Trop de publicités?Une expression lambda est utilisée pour créer une fonction anonyme. Ici, une fonction anonyme est affectée à une variable déléguée :
Func<int, int> increase = (a => a + 1);
Vous pouvez ensuite utiliser le délégué pour appeler la fonction :
var answer = increase(41);
Habituellement, les expressions lambda sont utilisées pour envoyer un délégué à une méthode, par exemple pour envoyer un délégué à la méthode ForEach
afin qu'elle soit appelée pour chaque élément de la liste :
List<int> list = new List<int>();
list.Add(1);
list.Add(2);
list.ForEach(n => Console.WriteLine(n));
J'ai rédigé un article il y a quelque temps qui, je l'espère, pourra vous être utile : http://www.dontcodetired.com/blog/?tag=/lambda+expressions
Je suis peut-être un peu simpliste, mais si j'étais vous, je commencerais par considérer les lambdas comme un moyen agréable de raccourcir le code en supprimant des éléments tels que les boucles foreach imbriquées ou les éléments top n.
Ainsi, si vous faites le tour des hôtels pour en trouver certains avec des chambres bon marché, vous pourriez (en supposant que les hôtels sont dans IEnumerable) :
cheapHotels = hotels.Where(h => h.PriceFrom < 50)
Une fois que cela commence à faire tilt, vous pouvez passer à quelque chose de plus complexe, c'est une méthode aléatoire que j'ai trouvée dans mon projet actuel en utilisant des lambdas (probablement empruntée ailleurs !) :
private T DeserializeObject<T>(XmlDocument xDoc, string typeName)
{
Type type = AppDomain.CurrentDomain.GetAssemblies().SelectMany(a => a.GetTypes()).Single(t => t.FullName == typeName);
object o;
var serializer = new XmlSerializer(typeof(T));
using (TextReader tr = new StringReader(xDoc.InnerXml))
{
o = serializer.Deserialize(tr);
tr.Close();
}
return (T)o;
}