【发布时间】:2022-12-25 10:21:30
【问题描述】:
我打算使用具有以下内容的 .NET Core 6 WPF 应用程序进行延迟初始化。
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
Lazy<List<int>> myNumbersList = new Lazy<List<int>>(Enumerable.Range(1, 99999999)
.Select(x => x).ToList());
List<int> myNumbersList2 = new List<int>(Enumerable.Range(1, 99999999)
.Select(x => x).ToList());
}
它们甚至在调用 WPF 的 MainWindow 的构造函数之前就已初始化。
lazy 不是应该在每次使用时都初始化吗?
【问题讨论】:
-
是的,属性已初始化,但 lambda 不会执行,除非您调用 .Value... 编辑:哦,您没有传递表达式。您传递了一个值,调用了错误的构造函数。在构造函数参数前加上
() =>。 -
Lazy 已初始化,您构造了它,但其背后的东西 List 却没有。您可能想要检查 Lazy 实例上的 IsValueCreated 属性以查看您自己。
-
通用类型不是“标签”,C# 也不是 HTML ...
标签: c# .net .net-core .net-6.0 lazy-initialization