考虑以下代码

 public sealed class Singleton
 {
     private static readonly Singleton instance = new Singleton();
     public static Singleton Instance { get { return instance; } }

     static Singleton() {}
     private Singleton() {}
 }




1)这里静态构造函数的目的是什么? (我知道在创建该类的第一个实例之前将调用静态构造函数)。但是在上述代码的上下文中
没有静态构造函数,我不能使用它吗?

2)我听说单例的优点之一是可以扩展到工厂。
   由于它是密封类,您将如何将其扩展到工厂?您能举一些例子吗?

最佳答案

静态构造函数可确保在使用单例之前不对其进行构造。如果不存在静态构造函数,则CLR在运行类型初始值设定项时还有更多的余地。有关更多信息,请参见我的article on beforefieldinit和关于.NET 4 type initialization changes的博客文章。

至于将单身人士变成工厂,您确实必须提供更多背景信息。我想,您的Instance属性可以选择是否始终返回对同一对象的引用。

关于c# - 关于Singleton C#的两个问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2587880/

10-12 12:49
查看更多