Статическая лямбда
Перед списком параметров лямбды можно написать
static. Такая лямбда использует только
свои аргументы и статический контекст; локальные
переменные метода она не захватывает. Это
уменьшает скрытые зависимости и нагрузку
на замыкание. Тип по-прежнему задаётся
делегатом, например Func из System.
Синтаксис
static (параметры) => выражение
static (параметры) => { тело }
Пример
Давайте объявим статическую лямбду с одним параметром:
using System;
class Program
{
static void Main()
{
Func<int, int> fn = static num => num * 2;
Console.WriteLine(fn(5));
}
}
Результат выполнения кода:
10
Пример
Давайте укажем тип параметра у статической лямбды:
using System;
class Program
{
static void Main()
{
Func<int, int> fn = static (int num) => num + 1;
Console.WriteLine(fn(12));
}
}
Результат выполнения кода:
13
Пример
Давайте обработаем строку в статической лямбде:
using System;
class Program
{
static void Main()
{
Func<string, string> fn =
static str => str.ToUpper();
Console.WriteLine(fn("abcde"));
}
}
Результат выполнения кода:
"ABCDE"
Пример
Давайте сохраним статическую лямбду в переменную и вызовем её дважды:
using System;
class Program
{
static void Main()
{
Func<int, int> fn = static num => num * num;
Console.WriteLine(fn(3));
Console.WriteLine(fn(4));
}
}
Результат выполнения кода:
9
16
Смотрите также
-
лямбда-выражение,
общий синтаксис короткой функции -
локальная функция,
которая может быть статической отдельно -
оператор
return,
которым возвращают значение из лямбды с блоком -
ключевое слово
var,
которым сокращают объявление делегата