为'这个'创建一个实例变量。在C#中

时间:2015-12-30 16:30:33

标签: c# singleton

我正在浏览一些代码,而且我遇到过对我来说很奇怪的事情。这是一个简短的例子,说明了正在做什么。

namespace some.namespace
{
    public abstract class ClassName
    {

        private static ClassName _instance = null;

        private static ClassName Instance
        {
            get
            {
                return _instance;
            }
            set
            {
                _instance = value;
            }
        }

        public ClassName ()
        {
            if(Instance != null)
            {
            return;
            }
            Instance = this;
        }
    }
}        

有没有充分的理由让我失踪?在整个代码中,都有对ClassName.Instance....

的引用

3 个答案:

答案 0 :(得分:6)

这是一种名为Singleton的模式。

  

在软件工程中,单例模式是一种设计模式   将类的实例化限制为一个对象。这是   当需要一个对象来协调跨越的操作时非常有用   系统。

来自wikipedia

答案 1 :(得分:1)

这是Singleton模式的一种非常幼稚的实现。有关该主题的更深入讨论,请参阅Here is a working example

答案 2 :(得分:0)

像其他人已经回答:这是一个单身人士模式。但它有一些缺陷。

  1. 它不是线程安全的。
  2. 它的构造函数是公共的,这意味着它并不真正服务于单例原则:确保只有一个类的实例。您可以根据需要创建任意数量的文件。
  3. 课程没有密封。这意味着您可以从此类继承并愉快地从子类构建实例。
  4. 有关此主题的详细信息,请参阅C# in Depth有关单身人士的信息。