Я хотел бы использовать Lazy T для реализации memoization, но для функции инициализации требуется статический контекст.
Например, следующий код отказывается компилировать, предупреждая, что нестатические члены a и b недоступны. Мне непонятно, почему это так, так как объект Lazy является самим экземпляром и не имеет видимости в статическом контексте.
public class SomeExpensiveCalculation
{
private int a;
private int b;
public Lazy<int> Result = new Lazy<int>(() => a + b); //nope!
}