【发布时间】:2015-08-06 19:03:54
【问题描述】:
朋友告诉我,下面是在C#中创建singleton design pattern的方法之一
public class class1{
public static class1 Obj { get; private set; }
static class1()
{
Obj = new class1();
}
}
他告诉我静态构造函数在应用程序中只运行一次,所以只会创建一个class1的实例,
但我看到我必须添加这个if(Obj==null) 来检查对象的存在
public class class1{
public static class1 Obj { get; private set; }
static class1()
{
**if(Obj==null)**
Obj = new class1();
}
}
哪个代码是正确的?
【问题讨论】:
-
“我明白了”是什么意思?是什么让你认为你需要这样做? (我个人会使用只读字段,请注意...)见csharpindepth.com/Articles/General/Singleton.aspx
-
if没用。 -
如果没用,为什么?请解释
-
@AbrahamJosef 因为在那一步不可能
Obj不为空。 -
我更喜欢使用带有 GetInstance() 和私有构造函数的经典单例模式。您无需考虑 c# 的工作原理
标签: c# design-patterns singleton