C# Language => Opérateur Lambda


Exemple

3.0

L'opérateur => a la même priorité que l'opérateur d'affectation = et est associé à droite.

Il est utilisé pour déclarer des expressions lambda et est également largement utilisé avec les requêtes LINQ :

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

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

Lorsqu'il est utilisé dans des extensions LINQ ou des requêtes, le type des objets peut généralement être ignoré car il est déduit par le compilateur:

int shortestWordLength = words.Min(w => w.Length); //also compiles with the same result

La forme générale de l'opérateur lambda est la suivante:

(input parameters) => expression

Les paramètres de l'expression lambda sont spécifiés avant => opérateur, et l'expression / statement / block à exécuter est à droite de l'opérateur:

// expression
(int x, string s) => s.Length > x

// expression
(int x, int y) => x + y

// statement
(string x) => Console.WriteLine(x)

// block
(string x) => {
        x += " says Hello!";
        Console.WriteLine(x);
    }

Cet opérateur peut être utilisé pour définir facilement des délégués, sans écrire de méthode explicite:

delegate void TestDelegate(string s);

TestDelegate myDelegate = s => Console.WriteLine(s + " World");

myDelegate("Hello");

au lieu de

void MyMethod(string s)
{
    Console.WriteLine(s + " World");
}

delegate void TestDelegate(string s);

TestDelegate myDelegate = MyMethod;

myDelegate("Hello");