Xaq*_*ron 23 c# parameters constructor lazy-evaluation
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);
Run Code Online (Sandbox Code Playgroud)
我的问题是当我们使用惰性实例时如何传递InstanceName给myClass构造函数?
Mar*_*ers 30
试试这个:
Lazy<myClass> myLazy = new Lazy<myClass>(() => new myClass(InstanceName));
Run Code Online (Sandbox Code Playgroud)
请记住,表达式是懒惰地计算的,因此如果InstanceName在调用构造函数之前更改变量的值,则可能无法执行预期的操作.
小智 7
Lazy有两种初始化方法.第一个是使用T的默认ctor(无参数)
第二个是接受具有客户初始化逻辑的Func.你应该使用这里提到的第二个重载
http://msdn.microsoft.com/en-us/library/dd642329.aspx