=> – operátor (Referenční dokumentace jazyka C#)
=> Token se nazývá operátor lambda.Používá se v lambda výrazy do samostatných vstupní proměnné na levé straně z těla lambda na pravé straně.Lambda výrazy jsou vložené výrazy, které jsou podobné anonymní metody, ale flexibilnější; Tyto jsou často používány v LINQ dotazy, které jsou vyjádřeny v syntaxi metody.Další informace naleznete v tématu Výrazy Lambda (Průvodce programováním v C#).
Následující příklad ukazuje dva způsoby, jak vyhledat a zobrazit délka nejkratší řetězec v poli řetězců.První část příkladu platí lambda výraz (w => w.Length) pro každý prvek words pole a potom používá Min``1 způsob hledání nejmenší délku.Pro srovnání druhá část příkladu ukazuje delší řešení, které používá syntaxi dotazu provést stejnou akci.
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
Poznámky
=> Operátor má stejnou prioritu jako operátor přiřazení (=) a je asociativní zleva doprava.
Můžete explicitně zadat typ vstupní proměnné nebo nechat kompilátor odvodit v obou případech je silného typu proměnné v době kompilace.Zadáte-li typ, je nutné uzavřít název typu a názvu proměnné v závorkách, jak ukazuje následující příklad.
int shortestWordLength = words.Min((string w) => w.Length);
Příklad
Následující příklad ukazuje, jak napsat lambda výraz pro přetížení standardního dotazovacího operátoru Enumerable.Where``1 , která má dva argumenty.Protože lambda výraz obsahuje více než jeden parametr, parametry musí být uzavřeny v závorkách.Druhý parametr index, představuje index aktuální prvek v kolekci.Where Výraz vrátí všechny řetězce, jejichž délka je menší než jejich pozice indexu v poli.
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
}
Viz také
Referenční dokumentace
Výrazy Lambda (Průvodce programováním v C#)