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