При использовании локальных функций в С# 7 у вас есть две опции, когда вы хотите передать параметры (или другие локальные переменные) из основного метода до локальной функции: вы можете явно объявить параметры так же, как и любую другую функцию, или просто "захватить" параметры/переменные из содержащего метода и использовать их напрямую.
Пример, возможно, иллюстрирует это лучше всего:
Явное объявление
public int MultiplyFoo(int id)
{
return LocalBar(id);
int LocalBar(int number)
{
return number * 2;
}
}
Захватив
public int MultiplyFoo(int id)
{
return LocalBar();
int LocalBar()
{
return id * 2;
}
}
Оба метода работают одинаково, но способ, которым они ссылаются на локальную функцию, отличается.
Поэтому мой вопрос:
Есть ли разница между этими двумя, о которых я должен знать? Я думаю с точки зрения производительности, распределения памяти, сбора мусора, ремонтопригодности и т.д.