一个对象的延迟初始化意味着该对象的创建将会延迟至第一次使用该对象时。(在本主题中,术语“延迟初始化”和“延迟实例化”是同义词。)延迟初始化主要用于提高性能,避免浪费计算,并减少程序内存要求。 以下是最常见的方案:

  • 有一个对象的创建开销很大,而程序可能不会使用它。 例如,假定您在内存中有一个 Customer 对象,该对象的 Orders 属性包含一个很大的 Order 对象数组,该数组需要数据库连接以进行初始化。 如果用户从未要求显示 Orders 或在计算中使用其数据,则没有理由使用系统内存或计算周期来创建它。 通过使用Lazy<Orders> 将 Orders 对象声明为延迟初始化,可以避免在不使用该对象的情况下浪费系统资源。

  • 有一个对象的创建开销很大,您想要将创建它的时间延迟到完成其他开销大的操作之后。 例如,假定您的程序在启动时加载若干个对象实例,但只有一些对象实例需要立即执行。 通过将不必要的对象的初始化延迟到已创建必要的对象之后,可以提高程序的启动性能。

尽管您可以编写自己的代码来执行延迟初始化,但我们推荐使用 Lazy<T>。 Lazy<T> 及其相关的类型还支持线程安全,并提供一致的异常传播策略。

http://msdn.microsoft.com/ZH-CN/library/dd997286(v=vs.110).aspx

最新文章

  1. postgresql无法安装pldbgapi的问题
  2. 用 maven filter 管理不同环境的配置文件
  3. MongoDB安装部署(一)
  4. js 开启video全屏模式
  5. 大数据时代的数据存储,非关系型数据库MongoDB(一)
  6. [Ext JS 4] Extjs 它 initComponent 和 constructor差分
  7. Reactive Extensions
  8. Swift之父Chris Lattner将从Apple离职,加入特斯拉
  9. python中json.loads,dumps,jsonify使用
  10. 十大经典排序算法的JS版
  11. java模拟链表
  12. C#使用Owin技术部署轻量级webApi服务
  13. 8th,常用模块、正则表达式
  14. C++11 boost TR1 TR2曾经参考过的网址整理
  15. Oozie分布式工作流——EL表达式
  16. POJ 3320 Jessica&#39;s Reading Problem (尺取法)
  17. Android灯光系统通知灯【转】
  18. 跨域(二)——WebSocket
  19. 如何:为iOS 的方法写注释 让xcode 能够索引得到?
  20. CentOS7静态IP设置

热门文章

  1. 如何把rtf、doc文件转换为HTML文件
  2. UI4_UIWebView
  3. 一些常用css技巧的为什么(一)我所理解的margin
  4. java非静态变量初始化
  5. Spring AOP整理
  6. 洛谷 P1886 滑动窗口
  7. Codevs 2837 考前复习
  8. DailyWallpaper - V1.01 released
  9. 3月7日 Maximum Subarray
  10. LLVM language 参考手册(译)(6)