C# 为';这';在C中#

C# 为';这';在C中#,c#,singleton,C#,Singleton,我正在浏览一些代码,我遇到了一些对我来说很奇怪的东西。下面是一个正在做的简短示例 namespace some.namespace { public abstract class ClassName { private static ClassName _instance = null; private static ClassName Instance { get {

我正在浏览一些代码,我遇到了一些对我来说很奇怪的东西。下面是一个正在做的简短示例

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….

的引用,这是一个名为

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


From.

这是
单例模式的一个非常简单的实现。有关该主题的深入讨论,请参阅。

就像其他人已经回答的那样:这是一种单例模式。但它也有一些缺陷

  • 它不是线程安全的
  • 它的构造函数是公共的,这意味着它并不真正服务于单例原则:确保类只有一个实例。您只需创建您想要的任意数量
  • 这个班没有封条。这意味着您可以从这个类继承,并愉快地从子类构建实例

  • 有关此主题的完整信息,请参阅“关于单例”。

    这是单例模式。它是半个单例。通常构造函数是私有的/受保护的,
    实例是公共的。现在我知道它叫什么了,这就很有意义了。谢谢这显然是一个模糊且非常糟糕的singleton实现。摆脱它和/或用更好的实现替换。@TyCobb这是正确的。这种单例实现有一些缺陷。