почему Lazy ограничен статическими контекстами?

Я хотел бы использовать Lazy T для реализации мемоизации, но функция инициализации, похоже, требует статического контекста.

Например, следующий код отказывается компилироваться, предупреждая, что нестатические члены a и b недоступны. Мне не ясно, почему это так, поскольку объект Lazy сам является членом экземпляра и не имеет видимости в статическом контексте.

public class SomeExpensiveCalculation
{
    private int a;
    private int b;
    public Lazy Result = new Lazy(() => a + b); //nope!
}

31
задан Daniel Schobel 14 July 2011 в 07:30
поделиться