温馨提示×

C# singleton单例模式的最佳实践

c#
小樊
85
2024-07-30 15:42:11
栏目: 编程语言

在C#中,可以通过以下方式实现最佳的单例模式:

public sealed class Singleton
{
    private static Singleton instance = null;
    private static readonly object padlock = new object();

    private Singleton()
    {
    }

    public static Singleton Instance
    {
        get
        {
            lock (padlock)
            {
                if (instance == null)
                {
                    instance = new Singleton();
                }
                return instance;
            }
        }
    }

    public void SomeMethod()
    {
        // Do something
    }
}

在上面的代码中,我们使用了双重检查锁定来确保线程安全性,同时使用private构造函数和readonly关键字来保证单例的唯一性和不可变性。通过Instance属性来获取单例实例,确保只创建一个实例并在需要时返回该实例。

使用该单例模式的示例代码如下:

Singleton instance1 = Singleton.Instance;
instance1.SomeMethod();

Singleton instance2 = Singleton.Instance;
instance2.SomeMethod();

Console.WriteLine(instance1 == instance2); // Output: True

通过这种方式实现的单例模式可以保证在多线程环境下也能够正确地返回单一实例,并且保证了单例实例的唯一性和不可变性。

0