C# Language => Operatore Lambda

Esempio

3.0

L'operatore => ha la stessa precedenza dell'operatore di assegnazione = ed è associato a destra.

Viene utilizzato per dichiarare espressioni lambda e inoltre è ampiamente utilizzato con query LINQ :

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

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

Se utilizzato nelle estensioni o nelle query LINQ, il tipo di oggetti può essere saltato in genere poiché viene dedotto dal compilatore:

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

La forma generale dell'operatore lambda è la seguente:

(input parameters) => expression

I parametri dell'espressione lambda sono specificati prima => operatore e l'espressione / istruzione / blocco effettivo da eseguire è a destra dell'operatore:

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

Questo operatore può essere utilizzato per definire facilmente i delegati, senza scrivere un metodo esplicito:

delegate void TestDelegate(string s);

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

myDelegate("Hello");

invece di

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

delegate void TestDelegate(string s);

TestDelegate myDelegate = MyMethod;

myDelegate("Hello");