C#中单例模式的三种写法示例

作者:junjie 时间:2023-05-04 19:28:25 

第一种最简单,但没有考虑线程安全,在多线程时可能会出问题,不过俺从没看过出错的现象,表鄙视我……


public class Singleton
{
    private static Singleton _instance = null;
    private Singleton(){}
    public static Singleton CreateInstance()
    {
        if(_instance == null)
        {
            _instance = new Singleton();
        }
        return _instance;
    }
}


第二种考虑了线程安全,不过有点烦,但绝对是正规写法,经典的一叉


public class Singleton
{
    private volatile static Singleton _instance = null;
    private static readonly object lockHelper = new object();
    private Singleton(){}
    public static Singleton CreateInstance()
    {
        if(_instance == null)
        {
            lock(lockHelper)
            {
                if(_instance == null)
                     _instance = new Singleton();
            }
        }
        return _instance;
    }
}


第三种可能是C#这样的高级语言特有的,实在懒得出奇


public class Singleton
{
    private Singleton(){}
    public static readonly Singleton instance = new Singleton();
}


哦,shit!

标签:C#,单例模式
0
投稿

猜你喜欢

  • Java编程BigDecimal用法实例分享

    2022-05-02 05:40:06
  • Java多线程Atomic包操作原子变量与原子类详解

    2023-08-18 07:46:25
  • Java动态 代理和AOP应用示例

    2023-11-26 07:45:02
  • C#利用DesignSurface如何实现简单的窗体设计器

    2023-10-18 18:43:28
  • Java equals 方法与hashcode 方法的深入解析

    2022-03-05 19:20:15
  • Spring实战之使用注解实现声明式事务操作示例

    2021-08-19 07:16:07
  • 使用Java代码来比较Android客户端版本号

    2021-09-07 17:44:22
  • Android安装apk文件并适配Android 7.0详解

    2022-11-11 01:41:28
  • Flink开发IDEA环境搭建与测试的方法

    2023-02-21 21:20:46
  • DataGridView不显示最下面的新行、判断新增行、删除行操作

    2022-11-26 16:14:36
  • 使用@Order控制配置类/AOP/方法/字段的加载顺序详解

    2023-09-05 17:34:35
  • SpringBoot集成POI导出Execl表格之统一工具类

    2023-06-12 09:55:51
  • Java查找并高亮PDF文本过程解析

    2022-02-17 07:20:32
  • 全网最深分析SpringBoot MVC自动配置失效的原因

    2021-07-20 03:53:25
  • 简单总结C++中指针常量与常量指针的区别

    2022-06-28 17:33:12
  • PowerManagerService之手动灭屏流程示例分析

    2023-01-13 17:11:51
  • Java实现将txt文件转成xls文件的方法

    2022-05-20 10:21:25
  • Json字符串转Java对象和List代码实例

    2022-03-11 15:47:09
  • Java解析Excel内容的方法

    2023-03-20 20:36:26
  • C#异步执行任务的方法

    2022-02-27 15:02:41
  • asp之家 软件编程 m.aspxhome.com