Chciałbym użyć Lazy T do implementacji zapamiętywania, ale funkcja inicjalizacji wydaje się wymagać statycznego kontekstu.dlaczego Lazy <T> jest ograniczone do kontekstów statycznych?
Na przykład, następujący kod odmawia skompilować, ostrzegając, że członkowie niestatyczny i b są niedostępne. Nie jest dla mnie jasne, dlaczego tak jest, ponieważ obiekt Lazyjest samym elementem instancji i nie ma widoczności w kontekście statycznym.
public class SomeExpensiveCalculation
{
private int a;
private int b;
public Lazy<int> Result = new Lazy<int>(() => a + b); //nope!
}
Błąd tutaj nie występuje w Lazy, ale w wyrażeniu lambda. W kontekście lambda "a" i "b" jeszcze nie istnieją. – MattDavey