【发布时间】:2015-12-13 08:38:08
【问题描述】:
在单例模式中,我们有一个私有构造函数和一个公共静态方法,如下所示 -
public class MyClass
{
private static MyClass _uniqueInstance;
private MyClass()
{
}
public static MyClass GetInstance()
{
if(_uniqueInstance==null)
{
_uniqueInstance = new MyClass();
}
return _uniqueInstance;
}
}
我们可以通过调用静态方法来创建这个类的一个和唯一一个实例,只要我们需要这个类的对象,比如 -
var myObject = MyClass.GetInstance();
但我很困惑为什么我们在 GetInstance() 方法中检查 null,因为“_uniqueInstance”已经是一个静态变量,所以它只会被初始化并分配一次内存。即使我们不检查 null 并且仍然使用“new”初始化对象,也不会为该对象再次分配内存,因为它是一个静态变量。那么,这个空检查有什么用呢? 请消除我的疑问。
【问题讨论】:
-
检查的重点是让代码更难理解,并在多线程环境中引入问题。请参阅 Jon Skeet 文章 - csharpindepth.com/Articles/General/Singleton.aspx
标签: c# design-patterns singleton