在MSDN上,我发现了两种创建单例类的方法:
public class Singleton {
private static Singleton instance;
private Singleton() {}
public static Singleton Instance {
get {
if (instance == null)
instance = new Singleton();
return instance;
}
}
}
和
public sealed class Singleton {
private static readonly Singleton instance = new Singleton();
private Singleton(){}
public static Singleton Instance {
get { return instance; }
}
}
我的问题是:我们可以使用一个静态构造函数,在第一次使用之前为我们创建这个对象吗?
答案 0 :(得分:4)
肯定能使用静态构造函数吗?我不知道为什么你只想使用你已经展示的第二个例子来使用它,但你当然可以。它在功能上与你的第二个例子完全相同,但只需要更多的输入即可到达那里。
请注意,如果从多个线程访问属性,则无法安全地使用您的第一个示例,而第二个示例是安全的。您的第一个示例需要使用lock
或其他同步机制来防止创建多个实例的可能性。