当我尝试使用同一类的2个不同版本时,它们的行为实际上是相同的。
我搜索过但找不到这个问题的满意答案
单例和静态属性之间的区别在于2例,它是关于初始化时间的?我怎么能观察到差异?
编辑:我不问静态类和单例的差异。它们都是非静态的,唯一的区别是,第一个在Instance属性中初始化,第二个直接初始化
public sealed class Singleton
{
private static Singleton instance;
private Singleton()
{
}
public static Singleton Instance
{
get
{
if (instance == null)
{
instance = new Singleton();
}
return instance;
}
}
}
public sealed class Singleton2
{
private static Singleton2 instance = new Singleton2();
private Singleton2()
{
}
public static Singleton2 Instance
{
get
{
return instance;
}
}
}
答案 0 :(得分:1)
你的第一个单例实现不是线程安全的;如果多个线程同时尝试创建单例,则可能最终创建两个实例。你的第二个实现没有这个缺陷。
除此之外,它们的功能相同。
答案 1 :(得分:0)
Singleton类的实例将在Singleton.Instance方法第一次请求时创建。
Singleton2的实例将在其类型的初始化时创建,这可能由多种机制引起。它肯定会在访问Singleton2类
上的任何属性或方法之前创建