locked
Expressions Lambda RRS feed

Toutes les réponses

  • Expressions Lambda

     

    Les expressions lambda sont similaires aux méthodes anonymes introduites dans C# 2.0, excepté que les expressions lambda sont plus concises et plus flexibles.   Toutes les expressions lambda utilisent l’operateur lambda =>, qui est lu comme "va à".  Le côté gauche de l'opérateur lambda spécifie les paramètres d'entrée et le côté droit contient le bloc d'instruction ou de l'expression.  Voici un exemple des expressions lambda :

     

    delegate int D1(int i);
    D1 myDelegate = x => x + 1;
    int j = myDelegate(5); // j = 6


     

    Expressions Lambda et Méthodes anonymes


    Nous allons démontrer une expression lambda avec un exemple que commence par un délégué C# 1.0, puis plusieurs méthodes anonymes C# 2.0 et puis on le réécrit comme une expression lambda.

    Si nous voulons trouver tous les clients qui sont à Londres, nous pouvons utiliser un délégué de C# 1.0 comme suit.  LoadCustomers est seulement une fonction qui retourne une collection de clients 

     

    class Customer
    {
        public string CustomerID { get; set; }
        public string CustomerName { get; set; }
        public string City { get; set; }
    }
    static void Main(string[] args)
    {
        List<Customer> customers = LoadCustomers();
        List<Customer> query =
             customers.FindAll(new Predicate<Customer>(CityEqualsLondon));
    }
    static bool CityEqualsLondon(Customer c)
    {
        return c.City.Equals("London");
    }

     

    Maintenant nous allons utiliser des méthodes anonymes de c# 2.0 pour écrire le code.

    static void Main(string[] args)
    {
        List<Customer> customers = LoadCustomers();
        List<Customer> query = 
            customers.FindAll(
            delegate(Customer c) { return c.City.Equals("London"); });
    }

     

     

     

    Enfin, nous utilisons une expression lambda dans c# 3.0 pour réécrire le code.

     

    static void Main(string[] args)
    {
        List<Customer> customers = LoadCustomers();
        List<Customer> query =
             customers.FindAll(c => c.City.Equals("London"));
    }

     

     

    Nous pouvons voir que les expressions lambda sont beaucoup plus concises.

    Pour plus d'informations, consultez Expressions Lambda 

     

     

     
     
    Alex Petrescu - MSFT
    mardi 5 janvier 2010 13:37