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
构造函数?
答案 0 :(得分:28)
试试这个:
Lazy<myClass> myLazy = new Lazy<myClass>(() => new myClass(InstanceName));
请记住表达式是懒惰地计算的,所以如果在调用构造函数之前更改变量InstanceName
的值,它可能无法达到预期的效果。
答案 1 :(得分:7)
Lazy有两种初始化方法。第一种是使用T的默认ctor(无参数)
第二个是接受具有客户初始化逻辑的Func。你应该使用这里提到的第二个重载
答案 2 :(得分:3)
你不能,Lazy<T>
需要一个无参数的构造函数。您可以使用Lazy<T>(Func<T>)
构造函数,使用初始化类的方法。