2010-12-11 96 views
17
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); 

我的问题是,当如何通过InstanceNamemyClass构造函数时,我们使用的是懒惰的实例?传递参数的构造函数,初始化一个懒惰的实例

回答

25

试试这个:

Lazy<myClass> myLazy = new Lazy<myClass>(() => new myClass(InstanceName)); 

记住表达式懒洋洋地评估,所以如果你改变变量InstanceName的值调用构造函数它可能不是你所期望的面前。

+0

并用相同的'InstanceName'我会得到从缓存中的对象? – Xaqron 2010-12-11 00:14:32

1

您不能,Lazy<T>需要一个无参数的构造函数。尽管如此,您可以使用构造函数Lazy<T>(Func<T>),并使用初始化类的方法。

相关问题