这是C#的有效,懒惰,线程安全的Singleton实现吗?

我实现了像这样的Singleton模式:

public sealed class MyClass { ... public static MyClass Instance { get { return SingletonHolder.instance; } } ... static class SingletonHolder { public static MyClass instance = new MyClass (); } } 

从谷歌搜索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(); } } 

请特别注意,即使它是空的,您也必须显式声明构造函数,以使其成为私有。