= > Operator (C# odniesienia)
=> Token nosi nazwę operatora lambda.Jest ono używane w wyrażenia lambda do oddzielenia zmienne wejściowe po lewej stronie od korpusu lambda po prawej stronie.Lambda wyrażenia są wyrażeniami inline podobny do anonimowego metody, ale bardziej elastyczne. oni są szeroko stosowane w kwerendach LINQ, które są wyrażone w składni metody.Aby uzyskać więcej informacji, zobacz Wyrażenia lambda (Podręcznik programowania C#).
W poniższym przykładzie przedstawiono dwa sposoby, aby znaleźć i wyświetlić długość ciągu najkrótszy w tablicę ciągów.Wyrażenie lambda stosuje się pierwsza część przykładu (w => w.Length) do każdego elementu words tablicy, a następnie używa Min metodę, aby znaleźć najmniejszą długością.Dla porównania druga część przykładzie pokazuje dłużej rozwiązanie, które używa składni kwerendy, aby zrobić to samo.
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
Uwagi
=> Operator ma ten sam priorytet, jako operator przypisania (=) i są zespolone po prawej stronie.
Można jawnie określić typ zmienną wejściową lub pozwolić, kompilator wywnioskować w obu przypadkach zmienna ma jednoznacznie określony w czasie kompilacji.Po określeniu typu, należy ująć w nawiasy, wpisz nazwę oraz nazwę zmiennej jak w poniższym przykładzie.
int shortestWordLength = words.Min((string w) => w.Length);
Przykład
Poniższy przykład pokazuje, jak napisać wyrażenie lambda przeciążania operatora standardowej kwerendy Enumerable.Where który ma dwa argumenty.Ponieważ wyrażenie lambda zawiera więcej niż jeden parametr, parametry muszą być ujęte w nawiasy.Drugi parametr, index, reprezentuje indeks bieżącego elementu w kolekcji.Where Wyrażenie zwraca wszystkie ciągi kogo długości jest mniejsza od ich pozycji indeksu w tablicy.
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
}
Zobacz też
Informacje
Wyrażenia lambda (Podręcznik programowania C#)