c#单例

在 C# 中实现单例模式有多种方式,以下是其中两种常见的实现方法:

  1. 饿汉式单例模式:在程序启动时,就创建单例对象,并在整个程序运行期间使用该对象。该方式比较简单,但是可能会影响程序的性能,因为即使不需要使用该对象,它也会一直存在于内存中。

以下是一个使用饿汉式单例模式的示例代码:

 
public class Singleton
{
    private static Singleton instance = new Singleton();
    private Singleton() { }

    public static Singleton Instance
    {
        get { return instance; }
    }
}
View Code

 

  1. 懒汉式单例模式:在需要使用单例对象时,才创建单例对象。该方式可以节省内存空间,但需要考虑并发安全问题,避免多个线程同时创建对象。

以下是一个使用懒汉式单例模式的示例代码:

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

    private Singleton() { }

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

 

该实现方式通过双重检查锁定(Double Check Locking)保证了并发安全。当多个线程同时访问 Instance 属性时,只有一个线程可以进入锁定代码块,其他线程则需要等待该线程释放锁定。

posted @ 2023-03-30 00:16  elegydance  阅读(73)  评论(0编辑  收藏  举报