考虑以下代码
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/