Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C中的单态_C#_Design Patterns_Singleton - Fatal编程技术网

C# C中的单态

C# C中的单态,c#,design-patterns,singleton,C#,Design Patterns,Singleton,我想为创建singleton类收集更多变体。 你能根据你的意见给我提供C语言中最好的创作方式吗 谢谢 public sealed class Singleton { Singleton _instance = null; public Singleton Instance { get { if(_instance == null) _instance = new Singleton(

我想为创建singleton类收集更多变体。 你能根据你的意见给我提供C语言中最好的创作方式吗

谢谢

public sealed class Singleton
{
    Singleton _instance = null;

    public Singleton Instance
    {
        get
        {
            if(_instance == null)
                _instance = new Singleton();

            return _instance;
        }
    }

    // Default private constructor so only we can instanctiate
    private Singleton() { }

    // Default private static constructor
    private static Singleton() { }
}
我在这方面有一个建议,你可能会觉得有用

哦,一般情况下尽量避免使用单例模式,因为它对可测试性等很痛苦:

我在这方面有一个建议,您可能会发现它很有用

哦,一般情况下尽量避免使用单例模式,因为它会带来测试性等方面的痛苦:

请看这里:

看这里:


哈哈,乔恩,显然,你的文章很有名;-同一篇文章在几秒钟内给出了三个答案。太好了,我一直在关注你的文章,有时会实现版本4和版本5。完全同意除非真的,真的需要,否则应该避免单身。哈哈,乔恩,显然,你的文章是众所周知的;-同一篇文章在几秒钟内给出了三个答案。太好了,我一直在关注你的文章,有时会实现版本4和版本5。完全同意除非真的、真的需要,否则应避免使用Singleton。请注意,这是旧URL-csharpindepth.com上的更新版本是任何更改的最终位置。请注意,这是旧URL-csharpindepth.com上的更新版本是任何更改的最终位置。Mmh。。。听起来好像已经问过了…@Klaus:这个实现不好。。。属性和字段是非静态的。。。你怎么能创建一个实例?@Jon,对,实例应该是静态的。我没注意到。将编辑我的帖子。如果我创建一个单例,这是很少见的,因为我希望有非常可测试的代码,那么我现在就使用Lazy来创建实例。您可以获得线程安全、延迟初始化和简短的代码。但总的来说,避免单身,因为他们是邪恶的。。。听起来好像已经问过了…@Klaus:这个实现不好。。。属性和字段是非静态的。。。你怎么能创建一个实例?@Jon,对,实例应该是静态的。我没注意到。将编辑我的帖子。如果我创建一个单例,这是很少见的,因为我希望有非常可测试的代码,那么我现在就使用Lazy来创建实例。您可以获得线程安全、延迟初始化和简短的代码。但一般来说,避免单身,因为他们是邪恶的。
public sealed class Singleton
{
    static readonly Singleton instance=new Singleton();

    // Explicit static constructor to tell C# compiler
    // not to mark type as beforefieldinit
    static Singleton()
    {
    }

    Singleton()
    {
    }

    public static Singleton Instance
    {
        get
        {
            return instance;
        }
    }
}