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 日
免责声明:本站为个人博客,博客所发布的一切修改补丁、注册机和注册信息及软件的文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途。否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关,您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。访问和下载本站内容,说明您已同意上述条款。