考虑以下代码
public sealed class Singleton
{
private static readonly Singleton instance = new Singleton();
public static Singleton Instance { get { return instance; } }
static Singleton() {}
private Singleton() {}
}
问题
1)这里静态构造函数的目的是什么? (我知道在创建类的第一个实例之前将调用静态构造函数)。但是在上面代码的上下文中 没有静态构造函数我不能使用它吗?
2)我听说单身人士的一个优点是它可以延伸到工厂。 既然它是一个密封的类,你将如何将它扩展到工厂?你能举一些例子吗?
答案 0 :(得分:7)
静态构造函数确保单例在使用之前不会构造。如果静态构造函数不存在,CLR在运行类型初始化程序时有更多的余地。有关详细信息,请参阅我的article on beforefieldinit和我关于.NET 4 type initialization changes的博文。
至于将单身人士变成工厂 - 你真的需要提供更多的背景。您的Instance
属性可以选择是否始终返回对同一对象的引用,我想......
答案 1 :(得分:0)
我不建议您拥有工厂属性,因为属性不应该做太多工作。