有人能用简单的话解释一下,为什么C#中的Lazy需要获取Func吗?
我知道有时你需要一个函数来执行某些高级的init()操作,但是很多情况下我发现自己写了一个单例或者其他简单的东西,只需创建该类的新实例。就像Jon Skeet的书中所示。 http://csharpindepth.com/Articles/General/Singleton.aspx 我认为这种语法非常恼人。
谢谢!
public Lazy (Func<T> valueFactory);
我知道有时你需要一个函数来执行某些高级的init()操作,但是很多情况下我发现自己写了一个单例或者其他简单的东西,只需创建该类的新实例。就像Jon Skeet的书中所示。 http://csharpindepth.com/Articles/General/Singleton.aspx 我认为这种语法非常恼人。
谢谢!
private static readonly Lazy<Singleton> lazy =
new Lazy<Singleton>(() => new Singleton());
Lazy<T>
的要点是,只有在首次访问lazy
时才执行new Singleton()
。如果语法是new Lazy<Singleton>(new Singleton());
,则实例将立即创建。您需要一个在首次访问lazy
时执行的Func<T>
。 - René Vogt