• 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; }
          }
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
    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;
              }
          }
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      • 24
      • 25

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

  • 相关阅读:
    html设置背景图大小,自动拉伸背景图
    vue-mixin
    【Android】WebView 基本使用
    redisinsight--基础--01--介绍
    C#(Csharp)我的基础教程(一)(我的菜鸟教程笔记)-构造方法学习与探究
    聊聊Redis的数据热点问题
    人工神经网络算法实战教程
    台灯怎么选对眼睛好?精选眼科医生推荐护眼灯
    金九银十之面试闲谈
    【机器学习并行计算】2 parameter server参数服务器
  • 原文地址:https://blog.csdn.net/qq_41942413/article/details/133328264