Оператор => (Справочник по C#)

Маркер => называется лямбда-оператором.Он используется в лямбда-выражениях для отделения входных переменных с левой стороны от тела лямбда-выражения с правой стороны.Лямбда-выражения — это встроенные выражения, аналогичные анонимным методам, но более гибкие. Они широко используются в запросах LINQ, выраженных с использованием синтаксиса методов.Дополнительные сведения см. в разделе Лямбда-выражения (Руководство по программированию в C#).

В следующем примере показано два способа найти 2 и отображения длина наиболее короткой строк в массиве строк.В первой части примера лямбда-выражение применяется (w => w.Length) к каждому элементу массива words и затем используется метод Min для поиска является наименьшей длина.Для сравнения вторая часть выводу более полное решение, использующее задачи синтаксиса запросов, то же действие.

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

Заметки

Оператор => имеет тот же приоритет, что и оператор присваивания (=) и является правоассоциативным.

Можно определить тип входной переменной значения явно или позволить компилятору передавать его; в любом случае переменная строго типизированным во время компиляции.При определении типа необходимо заключить имя типа и имя переменной в скобки, как показано в следующем примере.

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

Пример

В следующем примере показано, как создать лямбда-выражение перегруженной функции Enumerable.Where для стандартных операторов запросов, которая принимает 2 аргумента.Поскольку лямбда-выражение имеет несколько параметров, параметры должны быть заключены в скобки.Второй параметр, index, представляет собой индекс текущего элемента в коллекции.Выражение Where возвращает все строки, длина которых их позиции индекса в массиве.

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
}

См. также

Ссылки

Лямбда-выражения (Руководство по программированию в C#)

Основные понятия

Руководство по программированию на C#

Другие ресурсы

Справочник по C#