0
A
回答
4
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; }
}
}
相關問題
- 1. Thread.CurrentThread是否總是返回相同的實例?
- 2. 是否WindsorContainer.Resolve <T>()總是返回相同的實例?
- 3. Thread.currentThread()是否總是返回相同的實例?
- 4. FlashScope.getCurrent(...)總是返回新的FlashScope實例
- 5. PetaPoco GetInstance()總是返回新的實例?
- 6. Caffe中的圖像分類總是返回相同的分類
- 7. managedQuery總是返回相同的結果
- 8. java.nio.SocketChannel總是返回相同的數據
- 9. php filesize()總是返回相同的值
- 10. Random.Next總是返回相同的值
- 11. SimpleDateFormat總是返回相同的結果
- 12. Random.Next返回總是相同的值
- 13. localtimestamp總是返回相同的值
- 14. AVAudioSession總是返回相同的outputVolume
- 15. 函數總是返回相同的值
- 16. jQuery .selectable(),總是返回相同的ID?
- 17. Random.Next()總是返回相同的值
- 18. ExtractSURF總是返回相同的方向
- 19. boundingRectWithSize總是返回相同的CGRect
- 20. h2o.runif()總是返回相同的矢量
- 21. glReadPixels總是返回相同的值glClearColor
- 22. 實例變量總是返回零
- 23. QPluginLoader實例總是返回null
- 24. A *實現總是返回相同的值
- 25. Django - 使用相同的類實例返回Pdf和JsonResponse
- 26. 兩個返回相同值的Arduino類實例
- 27. this.width在一個類中總是返回相同的值
- 28. SchedularFactory是否使用新方法返回相同的實例
- 29. canvas.getContext(「2d」)是否每次都返回相同的實例?
- 30. PHPUNIT - 返回實例化類2的同一個實例
沒錯,這就是Singleton模式:http://en.wikipedia.org/wiki/Singleton_pattern –
那麼最好的方法,只要它可以保持靜態只是有一個靜態類,如果不使用單身模式,這裏有很多關於它的帖子http://stackoverflow.com/questions/3136008/is-this-singleton-implementation-correct-and-thread-safe – Tenerezza