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

Vij*_*dra 10 design-patterns c#-4.0

任何人都可以帮助我理解使用System.Lazy与Singleton设计模式的好处.

Ali*_*hat 15

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

假设你想要一个类:

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

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