[英]Is this a valid, lazy, thread-safe Singleton implementation for C#?
我實現了一個Singleton模式,如下所示:
public sealed class MyClass {
...
public static MyClass Instance {
get { return SingletonHolder.instance; }
}
...
static class SingletonHolder {
public static MyClass instance = new MyClass ();
}
}
從C#Singleton實現的Googling來看,這似乎並不是在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();
}
}
特別要注意的是,即使要使構造函數為空,也必須顯式聲明它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.