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)来确保线程安全性和性能。

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

相关推荐
czq_26867194874 小时前
Python打卡第46天
开发语言·python
Evand J7 小时前
【MATLAB例程介绍】(17)永磁同步电机(PMSM)基于自适应无迹卡尔曼滤波(AUKF)的电流噪声在线估计。测量噪声协方差自适应与转速估计对比仿真
开发语言·matlab·卡尔曼滤波·无迹卡尔曼滤波·pmsm·电机滤波
Coder_Shenshen7 小时前
罗克韦尔ACD工程归档离线变量树解析
算法·c#
BaiPeter8 小时前
ZPL文件预览
开发语言·c++
学以智用10 小时前
ASP.NET MVC5(.NET Framework)底层完整运行逻辑
.net
噢,我明白了13 小时前
JAVA中的一些基础应用知识点
java·开发语言
寂寞的船13 小时前
【Unity知识速递】第10期 Unity GC 零分配实战:从 UnityEngine.Pool 到手动 GC 控制的全链路优化
jvm·unity·c#·游戏引擎·lucene
时间的拾荒人14 小时前
Redis 入门详解:核心特性、重要文件与全局命令实战
开发语言·redis·面试
敲上瘾14 小时前
Qt Widgets入门:项目模板解析与Hello World
开发语言·数据库·c++·qt·ui·qt6.3
学以智用14 小时前
FilterAttribute(ASP.NET Core MVC 过滤器特性)
.net