如何在C#中编写一个只返回对象的“相同”实例的类?这实际上是单身还是不同? “有效Java第二次添加”一书中提到了这一点。
我使用C#4.0(没有技术障碍)。
答案 0 :(得分:4)
是的,这是一个Singleton模式。您将根据我们自己的Jon Skeet的C#实现here找到一个很好的讨论。
答案 1 :(得分: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; }
}
}
答案 2 :(得分: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;
}
}
}
}