首页 > 解决方案 > c#中的单例类

问题描述

我试图理解 C# 中的单例模式。我为此得到了 1 个结构,但我对实施有一些疑问。由于我是 C# 新手,我想知道它是如何工作的。

public class Class1
{
    public static void Main(string[] args)
    {      
        Singleton.Object.Func1();
    }
}

public sealed class Singleton
{
    private static readonly Singleton _obj = new Singleton();

    static Singleton() { } // Make sure it's truly lazy

    private Singleton() { } // Prevent instantiation outside

    public static Singleton Object { get { return _obj; } }

    public void Func1() { }
}
  1. 这种模式对于单例类是否正确?

  2. 这行“static Singleton() { } // 确保它真的是惰性的”的目的是什么

  3. 类如何识别在特定时间创建的仅 1 个实例

标签: c#oop

解决方案


你的模式是有效的。还有其他一些方法可以做到这一点,但这很好。

static Singleton() { }我不认为这是必要的,但我可能是错的,它更类似于你需要在 C++ 中做的事情,以确保当你调用它时,它会抓住单例。

由于 _obj 是静态的,因此该类在任何给定时间只能有 1 个版本,这意味着每当您使用 .Object 调用它时,它都会返回这个有效副本。


推荐阅读