public class myClass
{
public myClass(String InstanceName)
{
Name = InstanceName;
}
public String Name { get; set; }
}
// Now using myClass lazily I have:
Lazy<myClass> myLazy;
Console.WriteLine(myLazy.Value.Name);
私の質問は、レイジーインスタンスを使用しているときにInstanceName
をmyClass
コンストラクターに渡す方法です。
これを試して:
Lazy<myClass> myLazy = new Lazy<myClass>(() => new myClass(InstanceName));
式は遅延評価されるため、コンストラクターが呼び出される前に変数InstanceName
の値を変更すると、期待どおりに動作しない可能性があることに注意してください。
Lazyには、初期化する2つの方法があります。 1つ目は、Tのデフォルトのctor(パラメーターなし)を使用することです。
2つ目は、顧客初期化ロジックを持つFuncを受け入れることです。ここで説明したように、2番目のオーバーロードを使用する必要があります
できません。_Lazy<T>
_にはパラメーターのないコンストラクターが必要です。ただし、クラスを初期化するメソッドを使用して、Lazy<T>(Func<T>)
コンストラクターを使用することもできます。