c# - Lazy<T> 为什么会得到 Func<T>

标签 c# lazy-loading

谁能简单解释一下,为什么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/

相关文章:

angular - JHipster : Receive 401 Unauthorized when making API call to microservice

ipad - 在不阻塞主线程的情况下从文件中延迟加载 UIImages?

我的网站的 JavaScript 无法在 IE 6/7 中运行

java - Spring Boot Rest Controller 中与 Jackson @JsonIgnore 合作 MongoDB 延迟加载

javascript - 使用 mobx 进行延迟加载的惯用方法

c# - 了解一行中使用的 Task.Run + Wait() + async + await 的使用

c# - 在 C# 中创建自定义 ODBC/OLE 驱动程序

c# - 在 C# 中使用 Regex.Split 的多个定界符

c# - 在 AutoFixture 中创建复杂的子项时使用父属性的值

c# 泛型属性