Operatore => (Riferimenti per C#)
Il token => è chiamato l'operatore lambda. Viene utilizzato nelle espressioni lambda per separare le variabili di input sul lato sinistro dal corpo della lambda sul lato destro. Le espressioni lambda sono espressioni in linea simili ai metodi anonimi, ma più flessibili. Vengono utilizzate spesso nelle query LINQ espresse in sintassi del metodo. Per ulteriori informazioni, vedere Espressioni lambda (Guida per programmatori C#).
string[] words = { "cherry", "apple", "blueberry" };
int shortestWordLength = words.Min(w => w.Length);
Console.WriteLine(shortestWordLength);
// Output: 5
Note
L'operatore => viene letto come "fino a". Nell'esempio precedente, l'espressione viene letta come "Min w fino a w punto Length".
L'operatore => ha la stessa precedenza dell'operatore di assegnazione (=) e prevede l'associazione all'operando di destra.
È possibile specificare in modo esplicito il tipo della variabile di input o dedurlo tramite il compilatore. In entrambi i casi la variabile è fortemente tipizzata in fase di compilazione. Quando si specifica un tipo, è necessario racchiudere tra parentesi il nome del tipo e quello della variabile, come illustrato nell'esempio seguente:
int shortestWordLength = words.Min((string w) => w.Length);
Più variabili di input sono racchiuse tra parentesi, come illustrato nell'esempio riportato più avanti in questo argomento.
Esempio
Nell'esempio riportato di seguito viene illustrato come scrivere un'espressione lambda per l'operatore di query standard Enumerable.Where con due variabili di input. Questa espressione restituisce tutte le stringhe la cui lunghezza è inferiore alla relativa posizione di indice nella matrice.
string[] digits = { "zero", "one", "two", "three", "four", "five",
"six", "seven", "eight", "nine" };
var shortDigits = digits.Where((digit, index) => digit.Length < index);
foreach (var sD in shortDigits)
{
Console.WriteLine(sD);
}
// Output:
// five
// six
// seven
// eight
// nine
Vedere anche
Riferimenti
Espressioni lambda (Guida per programmatori C#)