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

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

相关推荐
xiaoshuaishuai812 小时前
C# AvaloniaUI 资源找不到报错
java·服务器·前端·windows·c#
Xin_ye1008612 小时前
C# 零基础到精通教程 - 第十八章:部署与发布——让应用上线
开发语言·c#
思麟呀12 小时前
C++11并发编程:call_once一次性执行+atomic原子类型+CAS无锁编程+自旋锁
linux·开发语言·jvm·c++·windows
码不停蹄的玄黓13 小时前
Java 生产者-消费者模型详解
java·开发语言·python
爱讲故事的13 小时前
操作系统第一讲复习:为什么学习操作系统,以及操作系统到底在做什么?
linux·开发语言·windows·学习·ubuntu·c#
笨蛋不要掉眼泪13 小时前
Java并发编程:Executors框架类深度解析
java·开发语言·并发
无风听海14 小时前
ASP.NET Core .NET 10 错误响应体系全景:从 BadRequest 到编译器基础设施
后端·asp.net·.net
_童年的回忆_14 小时前
【php】在linux下PHP安装amqp扩展
linux·开发语言·php
JaydenAI14 小时前
[MAF预定义的AIContextProvider-03]ChatHistoryMemoryProvider——赋予Agent从经验中学习的能力
ai·c#·agent·memory·maf
AIMath~14 小时前
python中的uv命令揭秘
开发语言·python·uv