C#单例模式的三种写法

简介: 第一种最简单,但没有考虑线程安全,在多线程时可能会出问题  public class Singleton{    private static Singleton _instance = null;    private Singleton(){}    public static Sing...

 

第一种最简单,但没有考虑线程安全,在多线程时可能会出问题 

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();
}  

相关文章
|
23天前
|
设计模式 安全 Java
C# 一分钟浅谈:设计模式之单例模式
【10月更文挑战第9天】单例模式是软件开发中最常用的设计模式之一,旨在确保一个类只有一个实例,并提供一个全局访问点。本文介绍了单例模式的基本概念、实现方式(包括饿汉式、懒汉式和使用 `Lazy<T>` 的方法)、常见问题(如多线程和序列化问题)及其解决方案,并通过代码示例详细说明了这些内容。希望本文能帮助你在实际开发中更好地应用单例模式,提高代码质量和可维护性。
29 1
|
3月前
|
设计模式 安全 程序员
C#设计模式之单例模式
C#设计模式之单例模式
48 3
|
设计模式 C#
C# 机房重构单例模式
C# 机房重构单例模式
68 0
|
设计模式 安全 C#
【设计模式】C#实现单例模式
单例模式:某一个类在系统中只需要有一个实例对象,而且对象是由这个类自行实例化并提供给系统其它地方使用。单例模式属于一种创建型设计模式。
|
设计模式 开发框架 缓存
C# 程序开发:设计模式之单例模式
1、定义:单例模式就是保证在整个应用程序的生命周期中,在任何时刻,被指定的类只有一个实例,并为客户程序提供一个获取该实例的全局访问点。 首先来明确一个问题,那就是在某些情况下,有些对象,我们只需要一个就可以了。
1136 0
|
C#
C#设计模式之一单例模式(Singleton Pattern)【创建型】
原文:C#设计模式之一单例模式(Singleton Pattern)【创建型】 一、引言     看了李建忠老师的讲的设计模式已经有一段时间了(这段时间大概有一年多了),自己还没有写过自己的、有关设计模式的文章。
2246 0
|
.NET C# 开发框架