当前位置: 首页 > 编程笔记 >

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

萧和同
2023-03-14
本文向大家介绍C#中单例模式的三种写法示例,包括了C#中单例模式的三种写法示例的使用技巧和注意事项,需要的朋友参考一下

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


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!

 类似资料:
  • 本文向大家介绍Java中单例模式的7种写法,包括了Java中单例模式的7种写法的使用技巧和注意事项,需要的朋友参考一下 第一种(懒汉,线程不安全): 这种写法lazy loading很明显,但是致命的是在多线程不能正常工作。 第二种(懒汉,线程安全): 这种写法能够在多线程中很好的工作,而且看起来它也具备很好的lazy loading,但是,遗憾的是,效率很低,99%情况下不需要同步。 第三种(饿

  • 本文向大家介绍常见的在Python中实现单例模式的三种方法,包括了常见的在Python中实现单例模式的三种方法的使用技巧和注意事项,需要的朋友参考一下 单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的

  • 本文向大家介绍c#单例模式(Singleton)的6种实现,包括了c#单例模式(Singleton)的6种实现的使用技巧和注意事项,需要的朋友参考一下 1.1.1 摘要  在我们日常的工作中经常需要在应用程序中保持一个唯一的实例,如:IO处理,数据库操作等,由于这些对象都要占用重要的系统资源,所以我们必须限制这些实例的创建或始终使用一个公用的实例,这就是我们今天要介绍的——单例模式(Singlet

  • 本文向大家介绍C#实现单件模式的三种常用方法,包括了C#实现单件模式的三种常用方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#实现单件模式的三种常用方法。分享给大家供大家参考。具体分析如下: 单件模式是一种设计模式,即保持同时只能创建一个实例,下面列出了C#实现单件模式的三种方法 方法1 方法2 方法3 希望本文所述对大家的C#程序设计有所帮助。

  • 本文向大家介绍C#实现单例模式的几种方法总结,包括了C#实现单例模式的几种方法总结的使用技巧和注意事项,需要的朋友参考一下 介绍 单例模式是软件工程学中最富盛名的设计模式之一。从本质上看,单例模式只允许被其自身实例化一次,且向外部提供了一个访问该实例的接口。通常来说,单例对象进行实例化时一般不带参数,因为如果不同的实例化请求传递的参数不同的话会导致问题的产生。(若多个请求都是传递的同样的参数的话,

  • 单例模式的定义 确保某一个类只有一个实例, 而且自行实例化并向整个系统提供这个实例。 方法一: static Singleton *getInstance() { static Singleton locla_s; return &locla_s; } 该代码可能在c++11之前的版本导致多次构造函数的调用,所以只能在较新的编译器上使用。 方法二: