概述:

泛型Lazy<T>,延迟加载对象,线程安全,.NET4.0+

使用:

创建模拟数据:

public static List<Student> GetList(){return new List<Student>{new Student {Id = "1",Name = "1", Age = 25, CourseName = "数学", Grade = 85, },new Student {Id = "1",Name = "1", Age = 25, CourseName = "英语", Grade = 99, },new Student {Id = "2",Name = "2", Age = 27, CourseName = "数学", Grade = 49, },new Student {Id = "3",Name = "3", Age = 28, CourseName = "数学", Grade = 77, },new Student {Id = "3",Name = "3", Age = 28, CourseName = "英语", Grade = 15, },new Student {Id = "4",Name = "4", Age = 25, CourseName = "数学", Grade = 100, }};}
System.Lazy<List<Student>> stu = new Lazy<List<Student>>(()=>GetList());//传入委托Console.WriteLine($"对象是否创建:{stu.IsValueCreated}");var stuList = stu.Value;foreach (var item in stuList){Console.WriteLine($"姓名:{item.Name}");}Console.WriteLine($"对象是否创建:{stu.IsValueCreated}");Console.ReadKey();

控制台输出=>  可以看到使用Lazy时,在没有正式使用stu对象前,stu没有创建,IsValueCreated为false,

总结:

当业务中有需要加载对象,但不需要立即使用时,可以使用Lazy<T>对象来延迟加载。以此提高程序的效率,从而使程序占用更少的内存。当然了,我们也可通过IEnumerable<T>来延迟加载对象

扩展:实现多线程单例,多线程状态下获取的都是同一个对象。

public sealed class Singleton{private static readonly Lazy<Singleton> lazy =new Lazy<Singleton>(() => new Singleton());public static Singleton Instance { get { return lazy.Value; } }private Singleton(){}} 

C#冷门系列之Lazy相关推荐

  1. 谁在抢泡泡玛特的生意?

    NEW 关注Tech逆向思维视频号 最新视频→[少女做胸透被要求脱光 真有必要还是过分要求?] 出品|新熵 文 | 于松叶 编辑|月见 "泡泡玛特必须防止悬在头上的三把利剑刺下." ...

  2. python包管理工具ports_Linux软件包管理器讲解

    众所周知,Linux是个友好的操作系统,在Linux世界里软件包管理器基本上就是它的生命,而由于Linux发行版众多,所以软件包管理器也是鱼龙混杂.有Debian系的apt/dpkg,Redhat系的 ...

  3. 随笔01 我的创作纪念日(128天)

    机缘 (●'◡'●)幸会~这是我成为创作者的第128天~预计2023年,我的写作主题依然以阅读量惨淡的考研.AI安全的内容为主:毕竟简历已经被拒绝到麻木,可能不得不走上考研的道路啦~ 互联网受到疫情的 ...

  4. spring5学习系列之------1 给容器注册组件一 @Configuration  @Bean  @Scope  @Lazy

    在工作中我们对spring已经很常用了,但是用的大部分都是spring一些很少的部分,该系列是基于spring5版本的,先介绍相关组件的内容,在涉及到源码内容.话不多说,直接上干货吧 常用注解之给容器 ...

  5. 【Spring注解系列03】@Scope与@Lazy

    1.@Scope与@Lazy @Scope 对象实例作用域,默认是单实例的. 取值有四个: /*** @see ConfigurableBeanFactory#ConfigurableBeanFact ...

  6. Spring系列(五):@Lazy懒加载注解用法介绍

    今天给大家介绍@Lazy懒加载注解用法,希望对大家能有所帮助! 1.@Lazy 懒加载注解的概念 SpringIoC容器会在启动的时候实例化所有单实例 bean .如果我们想要实现 Spring 在启 ...

  7. android将字符串中间几个字用*代替,【Android技巧之相见恨晚系列】-TextView/string.xml冷门小技巧:占位转换符%1$s、%1$d等的用法...

    技巧比较冷门,我今天用到才了解到,以前都没接触过...然而却发现这是很早就已经有的技巧... 引子: 如果一段文字需要多段TextView拼接而成,比如:"我叫XXX,今年XX岁了,身高X. ...

  8. Unix / 类 Unix shell 中有哪些很酷很冷门很少用很有用的命令?(转)

    著作权归作者所有. 商业转载请联系作者获得授权,非商业转载请注明出处. 作者:孙立伟 链接:http://www.zhihu.com/question/20140085/answer/14107336 ...

  9. python 找质数的个数_盘一盘 Python 系列特别篇 All 和 Any

    本文含 3758 字,9图表截屏建议阅读 10 分钟 本文是 Python 系列的特别篇的第十四篇 特别篇 1 - PyEcharts TreeMap 特别篇 2 - 面向对象编程 特别篇 3 - 两 ...

  10. iOS动画系列之五:基础动画之缩放篇旋转篇Swift+OC

    这一篇主要介绍基础动画之缩放和旋转.这些基本操作分享完之后,我想想可以找个稍微复杂一点点的动画做做啦. 这篇继续基础篇,分享一下缩放和旋转.因为整体思路和平移基本上没有变化,加上源代码里面也有OC版本 ...

最新文章

  1. 2022-2028年中国BOPP消光膜行业全景调研及竞争格局预测报告
  2. R 生信数据可视化(聚类热图)
  3. rabbitmq的基本使用
  4. 【温故知新】CSS学习笔记(样式表)
  5. pixhawk px4 commander.cpp
  6. WPF 触屏事件后触发鼠标事件的问题及 DataGrid 误触问题
  7. SQL Server日期格式转换大全
  8. 阻塞和非阻塞队列下两种生产者消费者实现
  9. c 11 主要的新语言特性,C 11系列
  10. 2018.3.29亚信科技笔试
  11. [ERROR]-Error: failure: repodata/filelists.xml.gz from addons: [Errno 256] No more mirrors to try.
  12. 五大地形等高线特征_【新微专题】从等高线地形图的实际应用分析如何培养图表判读能力?...
  13. I LOVE YOU TOO密码解析
  14. 跟着 Cell 学作图 | 火山图进阶版
  15. 怎样给领导或同事送礼?
  16. [Design]国粹京剧 脸谱表情 值得收藏
  17. 理解CU微操作命令(控制信号)
  18. mysql table plugin_MySQL 启动报错Table 'mysql.plugin' doesn't exis(转载)
  19. 数据分析之数据透视表多维度计算(Office2019)
  20. OTB和VOT的评估指标

热门文章

  1. 费马定理_高数_1元微积分
  2. pythonplc曲线_启蒙篇-立志做PLC圈子里的IT大拿 | 利用VB编写程序读取PLC数据
  3. What the f*ck Python!
  4. 南华大学计算机考研真题,2021南华大学考研历年真题复习资料
  5. 个人银行账户管理程序【简化】
  6. Pytorch学习——池化层
  7. 产品能力提升|《简约至上·交互式设计四策略》
  8. selenium和requests实现12306登录及余票查询
  9. [資源]RAID是什么意思?RAID的应用
  10. 《Caffe Modle Zoo》