众所周知,Singleton模式是设计模式中比较简单和容易实现的模式之一,对此我就不详细描述其基本原理和用途,只谈谈在.NET中的实现。
MSDN中有专门一篇文章《在 C# 中实现 Singleton》对此进行描述。
其中描述了最简单的实现方式:原始代码

静态构造函数与Singleton模式在C#中的实现public sealed class Singleton 
 

而对于静态构造函数,MSDN中是这样描述的“静态构造函数用于初始化类。在创建第一个实例或引用任何静态成员之前,将自动调用静态构造函数来初始化类。”参见

一直以来我都不太赞同使用静态构造方法去构建Singleton模式。然而当我用反编译器反编译原始代码之后,大跌眼镜(虽然我没有眼睛静态构造函数与Singleton模式在C#中的实现),发现反编译出来代码就是用静态构造函数去初试化的。这是反编译出来的结果。
静态构造函数与Singleton模式在C#中的实现public sealed class Singleton
}

因此我得出结论可以断定,C#中的静态构造函数是实现Singleton模式的。

而对于多线程的环境下,MSDN开发精选2期中对C#实现Singleton模式的文章中也明确表明,.NET framework的机制其实已经保证了用第一种方法实现的Singleton多线程安全,原因是什么呢?文章中没说。
其实就是静态构造函数

相关文章:

  • 2022-12-23
  • 2021-06-01
  • 2021-07-21
  • 2021-09-13
  • 2021-10-26
猜你喜欢
  • 2021-11-23
  • 2022-01-24
  • 2021-08-26
  • 2022-01-15
  • 2022-12-23
相关资源
相似解决方案