当前位置: 首页 > news >正文

c#实现单例模式的两种方法(饿汉式、懒汉式)

在C#中,可以使用以下几种方式来实现单例模式:

  1. 饿汉式单例模式(Eager Singleton):

    • 在类加载时就创建实例。
    • 私有化构造函数,防止外部实例化。
    • 提供一个静态的只读属性来获取实例。
    • 代码示例:
    // 在C#中,静态成员在类的构造函数之前被调用。静态成员是在类第一次被使用之前就被初始化的,而类的构造函数是在实例化类的对象时被调用的。
    //静态成员包括静态字段、静态属性和静态方法。它们会在程序运行时,无论是否创建类的实例,都会被初始化和调用
    public class Singleton
    {private static readonly Singleton instance = new Singleton();private Singleton() { }public static Singleton Instance{get { return instance; }}
    }
    
  2. 懒汉式单例模式(Lazy Singleton):

    • 在需要时才创建实例。
    • 私有化构造函数,防止外部实例化。
    • 使用一个静态变量来保存实例,初始值为null。
    • 提供一个静态的只读属性来获取实例,如果实例为null,则进行实例化。
    • 使用双重锁定(double-checked locking)来确保线程安全。
    • 代码示例:
    public class Singleton
    {private static Singleton instance = null;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;}}
    }
    

这些是常见的实现单例模式的方式,根据具体的需求和场景选择适合的方式。

http://www.lryc.cn/news/176479.html

相关文章:

  • Git与Repo:开源开发的得力工具组合
  • centos7 添加网卡设置动态ip,修改网卡为任意名称
  • 计算机竞赛 深度学习人脸表情识别算法 - opencv python 机器视觉
  • nvm安装后node或npm不是内部或外部命令
  • Kafka数据可靠性保证
  • 基于R的linkET包qcorrplot可视化Mantel test相关性网络热图分析correlation heatmap
  • IOTDB的TsFile底层设计
  • MATLAB算法实战应用案例精讲-【人工智能】边缘计算(补充篇)
  • Linux学习-HIS系统部署(1)
  • Cairo介绍及源码构建安装(3)
  • Mac电脑信息大纲记录软件 OmniOutliner 5 Pro for Mac中文
  • linux设置应用开机自启(通用:mysql、jar、nginx、solr...)
  • Offset Explorer(Kafka消息可视化工具)报invalid hex digit ‘{‘错误解决方法
  • 深度学习:模型训练过程中Trying to backward through the graph a second time解决方案
  • 【数值计算方法】非线性方程(组)和最优化问题的计算方法:非线性方程式求根的二分法、迭代法、Newton 迭代法及其Python实现
  • linux主机名
  • 前端uniapp图片select联动文本切换
  • java - 包装类
  • 防火墙基础
  • 服务断路器_Resilience4j的断路器
  • 微信小程序学习笔记3.0
  • nginx 反向代理 负载均衡 动静分离
  • Codeanalysis(tca)后端二次开发环境搭建
  • JS前端树形Tree数据结构使用
  • Automation Anywhere推出新的生成式AI自动化平台,加速提高企业生产力
  • 电缆隧道在线监测系统:提升电力设施安全与效率的关键
  • Java BigDecimal 详解
  • 简述信息论与采样定理
  • 网络安全之网站常见的攻击方式
  • iOS Swift 拍照识别数字(Recognizing Text in Images)