.net Lazy标记未按预期工作- Lazy不是lazy -在使用/调用之前初始化

ee7vknir  于 2022-11-19  发布在  .NET
关注(0)|答案(1)|浏览(130)

下面是一个简单的.NET core 6 WPF应用程序示例
它们都在WPF的MainWindow的构造函数调用
lazy不是应该在每次使用时都被初始化吗?

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());

    }

pengsaosao

pengsaosao1#

您正在使用接受预初始化值的Lazy ctor:
Lazy<T>(T)
初始化Lazy类的新示例,该示例使用预初始化的指定值。

参数

T
要使用的预初始化值。
您可能正在寻找一个接受Func<T>值的工厂:
Lazy<T>(Func<T>)
初始化Lazy<T>类的新示例。发生延迟初始化时,使用指定的初始化函数。

参数

值工厂Func<T>
在需要时叫用以产生延迟初始化值的委派。

Lazy<List<int>> myNumbersList = new Lazy<List<int>>(() => Enumerable.Range(1, 99999999)
   .Select(x => x).ToList());

相关问题