2012-05-11 149 views
0

如何在C#中編寫只返回對象的「相同」實例的類?這是有效的單身還是不同?這是有效的Java第二版加入書中提到的。總是返回相同實例的類

我使用C#4.0(沒有技術障礙)。

+0

沒錯,這就是Singleton模式:http://en.wikipedia.org/wiki/Singleton_pattern –

+0

那麼最好的方法,只要它可以保持靜態只是有一個靜態類,如果不使用單身模式,這裏有很多關於它的帖子http://stackoverflow.com/questions/3136008/is-this-singleton-implementation-correct-and-thread-safe – Tenerezza

回答

4

是的,這是一個Singleton模式。你會發現基於我們自己的Jon Skeet的C#實現here的優秀討論。

+0

謝謝你們。只要確定。 – dotnetdev

0
using System; 

namespace DesignPatterns 
{ 
    public sealed class Singleton 
    { 
     private static volatile Singleton instance = null; 

     private Singleton() { } 

     public static Singleton Instance 
     { 
      get 
      { 
       if (instance == null) 
        Interlocked.CompareExchange(ref instance, new Singleton(), null); 

       return instance; 
      } 
     } 
    } 
} 
+0

在http://www.yoda.arachsys.com/csharp/singleton.html中向下滾動到「第三版」。 – jason

1

如果您的Singleton對象創建成本很高,但每次運行應用程序時都沒有使用,請考慮使用Lazy。

public sealed class LazySingleton 
{ 
    private readonly static Lazy<LazySingleton> instance = 
     new Lazy<LazySingleton>(() => new LazySingleton()); 

    private LazySingleton() { } 

    public static LazySingleton Instance 
    { 
     get { return instance.Value; } 
    } 
} 
相關問題