2017-08-17 43 views
8

单例模式实现在C# in Depth建议是单例模式 - 一个简化的实现?

public sealed class Singleton 
{ 
    private static readonly Singleton instance = new Singleton(); 
    static Singleton() 
    { 
    } 

    private Singleton() 
    { 
    } 

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

ReSharper的建议,以简化这个使用自动属性和C#6自动初始化属性:

public sealed class Singleton 
{ 
    static Singleton() 
    { 
    } 

    private Singleton() 
    { 
    } 

    public static Singleton Instance { get; } = new Singleton(); 
} 

这的确看起来简单。使用这种简化有没有缺点?

+4

不,这只是C#深入的版本是在C#6发布之前编写的 –

+2

是的,我没有轮到更新C#6的网站。 –

+0

@JonSkeet你认为你会拥有是否需要更新C#7的纸张版本?如果我没有弄错,已经差不多4年没有新版本了) –

回答

2

现场https://sharplab.io你可以看看IL代码,在这两种情况下IL代码是相似的。所以这应该以相同的方式工作。