Partager via


=>, opérateur (référence C#)

Le jeton => est appelé « opérateur lambda ». Il est utilisé dans les expressions lambda pour séparer les variables d'entrée à gauche du corps lambda à droite. Les expressions lambda sont des expressions inline semblables aux méthodes anonymes, mais plus souples ; elles sont largement utilisées dans les requêtes LINQ qui sont exprimées dans la syntaxe de méthode. Pour plus d'informations, consultez Expressions lambda (Guide de programmation C#).

L'exemple suivant illustre deux méthodes de recherche et afficher la longueur de la chaîne la plus courte d'un tableau de chaînes. La première partie de l'exemple applique une expression lambda (w => w.Length) à chaque élément du tableau d' words puis utilise la méthode de Min``1 pour rechercher la plus petite taille. Pour la comparaison, la deuxième partie de l'exemple indique qu'une plus longue solution que syntaxe de requête d'utilisations faisait le même.

string[] words = { "cherry", "apple", "blueberry" };

// Use method syntax to apply a lambda expression to each element
// of the words array. 
int shortestWordLength = words.Min(w => w.Length);
Console.WriteLine(shortestWordLength);

// Compare the following code that uses query syntax.
// Get the lengths of each word in the words array.
var query = from w in words
            select w.Length;
// Apply the Min method to execute the query and get the shortest length.
int shortestWordLength2 = query.Min();
Console.WriteLine(shortestWordLength2);

// Output: 
// 5
// 5

Notes

L'opérateur => a la même priorité que l'opérateur d'assignation (=) et est associatif à droite.

Vous pouvez spécifier le type de la variable d'entrée explicitement ou laissez le compilateur déduire ; dans les deux cas, la variable est fortement typée au moment de la compilation. Lorsque vous spécifiez un type, vous devez attacher le nom de type et le nom de variable entre parenthèses, comme indiqué dans l'exemple suivant.

int shortestWordLength = words.Min((string w) => w.Length);

Exemple

L'exemple suivant montre comment écrire une expression lambda pour la surcharge de l' Enumerable.Where``1 d'opérateur de requête standard qui prend deux arguments. Étant donné que l'expression lambda a plusieurs paramètres, les paramètres doivent être placés entre parenthèses. Le deuxième paramètre, index, représente l'index de l'élément actuel dans la collection. L'expression d' Where retourne toutes les chaînes dont les longueurs sont inférieures leurs emplacements d'index dans le tableau.

static void Main(string[] args)
{
    string[] digits = { "zero", "one", "two", "three", "four", "five", 
            "six", "seven", "eight", "nine" };

    Console.WriteLine("Example that uses a lambda expression:");
    var shortDigits = digits.Where((digit, index) => digit.Length < index);
    foreach (var sD in shortDigits)
    {
        Console.WriteLine(sD);
    }

    // Compare the following code, which arrives at the same list of short
    // digits but takes more work to get there.
    Console.WriteLine("\nExample that uses a for loop:");
    List<string> shortDigits2 = new List<string>();
    for (var i = 0; i < digits.Length; i++)
    {
        if (digits[i].Length < i)
            shortDigits2.Add(digits[i]);
    }

    foreach (var d in shortDigits2)
    {
        Console.WriteLine(d);
    }
    // Output:
    // Example that uses a lambda expression:
    // five
    // six
    // seven
    // eight
    // nine

    // Example that uses a for loop:
    // five
    // six
    // seven
    // eight
    // nine
}

Voir aussi

Référence

Expressions lambda (Guide de programmation C#)

Concepts

Guide de programmation C#

Autres ressources

Référence C#