8 votes

Explication de Lambda et ce qu'elle est ainsi qu'un bon exemple

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.

16voto

Guffa Points 308133

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));

4voto

Jason Roberts Points 503

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

2voto

Andrew Bullock Points 14899

Un Lambda est simplement un délégué, c'est une fonction anonyme que vous pouvez créer pour une exécution ultérieure.

Une expression lambda est un délégué non compilé sous la forme d'un arbre d'expression que vous pouvez manipuler avant de le compiler et de l'exécuter.

http://msdn.microsoft.com/en-us/library/bb397687.aspx

2voto

amelvin Points 6028

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;

}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X