Ответ 1
Вот так:
Func<...> method = null;
method = (...) => {
return method();
};
Ваш код создает ошибку, потому что вы пытаетесь использовать переменную, прежде чем назначать ее.
Ваше лямбда-выражение скомпилировано до того, как будет установлена переменная (переменная может быть установлена только в полное выражение), поэтому она не может использовать переменную.
Установка переменной в null
сначала позволяет избежать этой проблемы, поскольку она уже будет установлена при компиляции лямбда-выражения.
В качестве более мощного подхода вы можете использовать YCombinator.