День семьдесят шестой. #CSharp8
Новые функции в C# 8.
7. Статические локальные функции
Вы теперь можете добавлять модификатор
Рассмотрим следующий код. Локальная функция
Новые функции в C# 8.
7. Статические локальные функции
Вы теперь можете добавлять модификатор
static
к локальным функциям, чтобы убедиться, что локальная функция не включает (не ссылается) на переменные из обрамляющего её блока кода. Если это произойдёт, будет выброшено исключение CS8421 "A static local function can't contain a reference to <variable>." ("Статическая локальная функция не может ссылаться на <имя переменной>.")
.Рассмотрим следующий код. Локальная функция
LocalFunction
ссылается на переменную y
, объявленную в обрамляющем её коде (методе M
). Поэтому LocalFunction
не может быть объявлена статической:int M()Следующий код содержит статическую локальную функцию. Она может быть объявлена статической, поскольку она не содержит никаких ссылок на переменные из обрамляющего её кода:
{
int y;
LocalFunction();
return y;
void LocalFunction() => y = 0;
}
int M()Источник: https://docs.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-8
{
int y = 5;
int x = 7;
return Add(x, y);
static int Add(int left, int right) => left + right;
}