c#单例
在 C# 中实现单例模式有多种方式,以下是其中两种常见的实现方法:
- 饿汉式单例模式:在程序启动时,就创建单例对象,并在整个程序运行期间使用该对象。该方式比较简单,但是可能会影响程序的性能,因为即使不需要使用该对象,它也会一直存在于内存中。
以下是一个使用饿汉式单例模式的示例代码:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
public class Singleton { private static Singleton instance = new Singleton(); private Singleton() { } public static Singleton Instance { get { return instance; } } }
- 懒汉式单例模式:在需要使用单例对象时,才创建单例对象。该方式可以节省内存空间,但需要考虑并发安全问题,避免多个线程同时创建对象。
以下是一个使用懒汉式单例模式的示例代码:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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; } } }
该实现方式通过双重检查锁定(Double Check Locking)保证了并发安全。当多个线程同时访问 Instance
属性时,只有一个线程可以进入锁定代码块,其他线程则需要等待该线程释放锁定。