谁能简单解释一下,为什么C#中的Lazy需要获取Func?
public Lazy (Func<T> valueFactory);
我知道有时候你需要一个函数来做一些花哨的init()。
然而,很多时候我发现自己在写一个单例,或者一些简单的东西,只需要创建一个类的新实例。
正如乔恩的双向飞碟书中所示。
http://csharpindepth.com/Articles/General/Singleton.aspx
我觉得这种语法很烦人。
谢谢!
private static readonly Lazy<Singleton> lazy =
new Lazy<Singleton>(() => new Singleton());
最佳答案
您需要一个函数,因为如果您可以这样做:
var Lazy<Foo> = new Lazy<Foo>(new Foo());
您已经实例化了 Foo
,你不需要,否则你不必使用 Lazy<T>
开始。
Func<T>
持有 Foo
的初始化程序, 但仅在您访问 Lazy<T>
时才初始化它的 Value
.
关于c# - Lazy<T> 为什么会得到 Func<T>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51945003/