C#面:请写出C#中的单例模式

单例模式是一种常用的设计模式,它确保一个类只有一个实例,并提供一个全局访问点来访问该实例。

以下是一种常见的C#中的单例模式实现方式:

cs 复制代码
public class Singleton
{
    private static Singleton instance;
    private static readonly object lockObj = new object();

    private Singleton()
    {
        // 私有构造函数,防止外部实例化
    }

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

    // 其他成员方法和属性...
}

Singleton类的构造函数被声明为私有,这样就防止了外部代码通过新关键字实例化该类。通过静态属性Instance来获取Singleton类的唯一实例。在Instance的get访问器中,使用双重检查锁定(double-checked locking)来确保线程安全性和性能。

使用单例模式的好处是可以节省系统资源,避免多个实例的创建和销毁,同时也可以提供一个全局访问点,方便其他代码使用该实例。

相关推荐
唐宋元明清218821 小时前
.NET 磁盘管理-技术方案选型
windows·c#·存储
故事不长丨21 小时前
C#正则表达式完全攻略:从基础到实战的全场景应用指南
开发语言·正则表达式·c#·regex
哈库纳玛塔塔1 天前
放弃 MyBatis,拥抱新一代 Java 数据访问库
java·开发语言·数据库·mybatis·orm·dbvisitor
追逐时光者1 天前
精选 10 款 .NET 开源免费、功能强大的 Windows 效率软件
后端·.net
追逐时光者1 天前
一款开源、免费的 WPF 自定义控件集
后端·.net
phltxy1 天前
从零入门JavaScript:基础语法全解析
开发语言·javascript
天“码”行空1 天前
java面向对象的三大特性之一多态
java·开发语言·jvm
odoo中国1 天前
Odoo 19 模块结构概述
开发语言·python·module·odoo·核心组件·py文件按
代码N年归来仍是新手村成员1 天前
【Java转Go】即时通信系统代码分析(一)基础Server 构建
java·开发语言·golang
Z1Jxxx1 天前
01序列01序列
开发语言·c++·算法