c#Lazy延迟初始化也称为按需加载,是我们在写程序时经常会遇到的情形。例如创建某一对象时需要花费很大的开销,而这一对象在系统的运行过程中不一定会用到,这时就可以使用Lazy延迟初始化,在第一次使用该对象时再对其进行初始化,如果没有用到则不会进行初始化,这样一来程序的运行效率可以有效提升,也可以使程序占用更少硬件资源,从而优化程序的整体性能。

Lazy 对象初始化默认是线程安全的,在多线程环境下,第一个访问 Lazy 对象的 Value 属性的线程将初始化 Lazy 对象,在此之后访问的线程都将使用第一次初始化的数据

基础语法

Lazy<CiSharp> ci=new Lazy<CiSharp>();

示例代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace TestConsole
{
    public class Program
    {
        private static void Main(string[] args)
        {
            Lazy<CiSharp> lzy = new Lazy<CiSharp>();
            if (!lzy.IsValueCreated)
            {
                Console.WriteLine("对象还未初始化~");
            }

            Console.WriteLine($"网站域名是:{lzy.Value.Name}");
            if (lzy.IsValueCreated)
            {
                Console.WriteLine("对象还已初始化~");
            }

            Console.ReadLine();
        }
    }

    public class CiSharp
    {
        public string Name { get; set; } = "cisharp.com";
    }
}

c# lazy延迟加载示例代码运行结果
从上面的结果可以看出,lzy是在输出Name属性时才进行初始化。

最后修改:2022 年 09 月 30 日
如果觉得我的文章对你有用,请随意赞赏