私はLazy Tを使用してメモを実装したいと思いますが、初期化関数は静的コンテキストを必要とするようです。なぜLazy <T>は静的コンテキストに制約されていますか?
は、例えば、次のコードは、非静的メンバとBがアクセス不能であることを警告し、コンパイルすることを拒否する。 Lazyオブジェクトがインスタンスメンバーそのものであり、静的コンテキストでの可視性がないため、なぜこれがそうであるのかはわかりません。
public class SomeExpensiveCalculation
{
private int a;
private int b;
public Lazy<int> Result = new Lazy<int>(() => a + b); //nope!
}
ここでのエラーはレイジーではなくラムダ式です。ラムダ「a」と「b」の文脈では、まだ存在しない。 – MattDavey