酷代码 AI
菜单
服务商

作为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的情况下进行的,所以能保证只创建一个对象。 [2023-11-09 17:50:13 | AI写代码神器 | 343点数解答]

相关提问
请收藏新域名:pdcd.cn
发财导航,免费问AI
实用工具查看更多
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]
数独游戏 [娱乐类]
经典推箱子 [娱乐类]
AI摸鱼五子棋 [娱乐类]