簡體   English   中英

這是C#的有效,惰性,線程安全的Singleton實現嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM