Mat*_*hew 5 c# singleton multithreading thread-safety
我实现了像这样的Singleton模式:
public sealed class MyClass {
...
public static MyClass Instance {
get { return SingletonHolder.instance; }
}
...
static class SingletonHolder {
public static MyClass instance = new MyClass ();
}
}
Run Code Online (Sandbox Code Playgroud)
从谷歌搜索C#Singleton实现,似乎这不是在C#中做事的常用方法.我发现了一个类似的实现,但SingletonHolder类不是静态的,并且包含一个显式(空)静态构造函数.
这是实现Singleton模式的有效,懒惰,线程安全的方法吗?还是有什么我想念的?
Jon Skeet撰写了一篇关于在C#中实现Singleton模式的文章.
懒惰的实现是版本5:
public sealed class Singleton
{
Singleton()
{
}
public static Singleton Instance
{
get
{
return Nested.instance;
}
}
class Nested
{
// Explicit static constructor to tell C# compiler
// not to mark type as beforefieldinit
static Nested()
{
}
internal static readonly Singleton instance = new Singleton();
}
}
Run Code Online (Sandbox Code Playgroud)
请特别注意,即使它是空的,您也必须显式声明构造函数,以使其成为私有.