什么是System.Lazy <t>和Singleton设计模式</t>

时间:2012-03-10 06:46:20

标签: design-patterns c#-4.0

任何人都可以帮助我理解使用 System.Lazy与Singleton Design Pattern 的好处。

2 个答案:

答案 0 :(得分:15)

C#Singletons的最佳来源(也涵盖Lazy<>)属于Jon Skeet:http://csharpindepth.com/Articles/General/Singleton.aspx

假设您想要一个类:

  • 表示唯一的资源,因此它应该具有唯一的实例
  • 实例需要昂贵的初始化,
  • 初始化参数仅在运行时可用,
  • 有些情况下你根本不会使用这个对象,
  • 有多个线程可以尝试同时初始化单例对象,

如果上述大多数条件都成立,则需要确保该类为Singleton,并且该惰性初始化该唯一实例(直到需要时才初始化)如果您使用Lazy<>定位C#4.0或更高版本使您的设计更简单,更易读,更容易记忆。

答案 1 :(得分:1)

文档说

  

使用Lazy(Of T)的实例来推迟创建大型或   资源密集型对象或资源密集型的执行   任务,特别是当这种创建或执行可能不会发生时   在该计划的整个生命周期中。

因此,只有在需要时才能创建单例实例。

懒惰实例化通常很有用,因此在应用程序初始化时不会支付所有创建成本 - 可能会提供更好的用户体验。