Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Оператор лямбда-выражения (
Маркер => поддерживается в двух формах: как лямбда-оператор и в качестве разделителя имени члена и реализации элемента в определении текста выражения.
Лямбда-оператор
В лямбда-выражениях лямбда-оператор=> отделяет входные параметры слева от лямбда-тела справа.
В следующем примере функция 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#.