2017-08-17 24 views
8

Các mô hình thực hiện singleton đề xuất trong C# in DepthMẫu Singleton - một triển khai đơn giản?

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

    private Singleton() 
    { 
    } 

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

ReSharper gợi ý để đơn giản hóa này sử dụng một tài sản ô tô và C# 6 initializer tự động bất động sản:

public sealed class Singleton 
{ 
    static Singleton() 
    { 
    } 

    private Singleton() 
    { 
    } 

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

này thực sự trông đơn giản hơn. Có một nhược điểm để sử dụng đơn giản hóa này?

+4

Không, nó chỉ là phiên bản của C# chuyên sâu đã được viết trước khi C# 6 được phát hành –

+2

Yup, tôi đã không có vòng để cập nhật các trang web cho C# 6. –

+0

@ JonSkeet Bạn có nghĩ rằng bạn sẽ có thời gian để cập nhật phiên bản giấy cho C# 7? Đã gần 4 năm mà không có ấn bản mới nếu tôi không nhầm;) –

Trả lời

2

Trên trang web https://sharplab.io bạn có thể xem mã IL, trong cả hai trường hợp, mã IL đều giống nhau. Vì vậy, điều này sẽ làm việc theo cùng một cách.

Các vấn đề liên quan