Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Оператор лямбда-выражения (
Маркер => поддерживается в двух формах: как лямбда-оператор и в качестве разделителя имени члена и реализации элемента в определении текста выражения.
Справочные документы по языку C# описывают последнюю выпущенную версию языка C#. Она также содержит начальную документацию по функциям в общедоступных предварительных версиях для предстоящего языкового выпуска.
Документация определяет любую функцию, впервые представленную в последних трех версиях языка или в текущих общедоступных предварительных версиях.
Подсказка
Чтобы узнать, когда функция впервые появилась в C#, ознакомьтесь со статьей об истории версий языка C#.
Лямбда-оператор
В лямбда-выражениях лямбда-оператор=> отделяет входные параметры слева от лямбда-тела справа.
В следующем примере функция LINQ используется с синтаксисом метода для демонстрации использования лямбда-выражений:
string[] words = { "bot", "apple", "apricot" };
int minimalLength = words
.Where(w => w.StartsWith("a"))
.Min(w => w.Length);
Console.WriteLine(minimalLength); // output: 5
int[] numbers = { 4, 7, 10 };
int product = numbers.Aggregate(1, (interim, next) => interim * next);
Console.WriteLine(product); // output: 280
Входные параметры лямбда-выражения строго типизированы во время компиляции. Когда компилятор вводит типы входных параметров, например в предыдущем примере, можно опустить объявления типов. Если необходимо указать тип входных параметров, необходимо указать тип для каждого параметра, как показано в следующем примере:
int[] numbers = { 4, 7, 10 };
int product = numbers.Aggregate(1, (int interim, int next) => interim * next);
Console.WriteLine(product); // output: 280
В следующем примере показано, как определить лямбда-выражение без входных параметров:
Func<string> greet = () => "Hello, World!";
Console.WriteLine(greet());
Дополнительные сведения см. в лямбда-выражениях.
Определение текста выражения
Определение текста выражения использует следующий общий синтаксис:
member => expression;
Допустимое expression выражение. Возвращаемый тип expression должен быть неявно преобразован в тип возвращаемого элемента. Если член:
- Имеет тип возвращаемого
voidзначения или - Является:
- Конструктор
- Finalizer
- Метод доступа к свойству или индексатору
set
expression должно быть выражением инструкции. Так как результат выражения отклоняется, возвращаемый тип этого выражения может быть любым типом.
В следующем примере показано определение текста выражения для Person.ToString метода:
public override string ToString() => $"{fname} {lname}".Trim();
Это сокращенная версия следующего определения метода:
public override string ToString()
{
return $"{fname} {lname}".Trim();
}
Определения текста выражения можно создавать для методов, операторов, свойств, доступных только для чтения, конструкторов, методов завершения и методов доступа к свойствам и индексаторам. Дополнительные сведения см. в разделе "Элементы с выражением".
Перегрузка оператора
Невозможно перегружать => оператор.
Спецификация языка C#
Дополнительные сведения о лямбда-операторе см. в разделе "Анонимные выражения функций " спецификации языка C#.