C# 工程师必看:用双检锁优雅实现单例模式 Singleton!
在C#中,可以使用双检锁(也称为双重校验锁,或DCL锁)来实现单例模式。这是一种线程安全的单例模式实现方式。下面是一个例子: ```csharp public class Singleton { // 标记该字段是否已被初始化 private static volatile bool isInitialized; // 对象实例 private static Singleton instance; // 私有构造函数,只在这个类中创建对象 private Singleton() { } // 获取单例实例的方法 public static Singleton GetInstance() { if (!isInitialized) { // 使用可空引用类型(nullable reference type)来避免空引用异常 instance = isInitialized ? null : new Singleton(); isInitialized = true; } return instance; } } ``` 在这个例子中: * `isInitialized` 是一个布尔值,用于标记对象是否已经被初始化。 * `instance` 是Singleton类的实例。 * `GetInstance` 方法用于获取Singleton的实例。如果 `isInitialized` 是false,那么将创建一个新的Singleton实例,并将其赋值给 `instance`,然后设置 `isInitialized` 为true。如果 `isInitialized` 是true,那么直接返回已经创建好的 `instance`。 这种实现方式是线程安全的,因为在多线程环境下,由于 `isInitialized` 是volatile的,所以所有线程都能正确地读取到它的值。由于创建对象是在 `isInitialized` 为false的情况下进行的,所以能保证只创建一个对象。 ######[AI写代码神器 | 343点数解答 | 2023-11-09 17:50:13]
- 单例模式复习:网站计数器懒汉与饿汉模式代码实现及测试,附注意事项(阿里通义 | 512点数解答 | 2024-11-21 20:41:59)205
- 网站计数器单例模式:懒汉与饿汉模式代码实现及并发处理要点(字节豆包 | 368点数解答 | 2024-11-21 20:42:54)229
- Java 实现网站计数器:懒汉与饿汉模式代码解析及多线程问题应对(字节豆包 | 217点数解答 | 2024-11-21 20:43:05)171
- 单例模式复习:网站计数器懒汉与饿汉模式 Java 代码实现及注意要点(字节豆包 | 379点数解答 | 2024-11-21 20:44:14)200
- 单例模式复习:网站计数器懒汉模式 Java 代码实现及多线程注意要点(字节豆包 | 305点数解答 | 2024-11-21 20:47:00)122
- 单例模式复习:网站计数器懒汉模式代码实现及多线程注意要点(阿里通义 | 311点数解答 | 2024-11-21 20:51:13)126
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)350
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)322
- 工程师必知:PO模式与Page Factory的深度解析(百度文心 | 132点数解答 | 2023-11-09 18:33:18)288
- 深度解析:Vue中MVVM模式的组成、原理与双向数据绑定优势 (阿里通义 | 249点数解答 | 2023-11-09 00:56:24)265
- Android开发:Kotlin实现Builder模式示例及优势解析(百度文心 | 456点数解答 | 2023-11-09 17:29:15)254
- 2026 年苍溪县印刷企业年报工作:现状、问题与未来举措(字节豆包 | 1245点数解答 | 2026-03-09 12:55:05)19