我正在尝试在C#中测试我的单例对象,但是对我如何用蛮力实例化该对象(使用并行foreach)感到不满意。
是否有正确的方法/更好的方法进行测试?
答案 0 :(得分:0)
我不明白您对“ parallel foreach”的意思。单例实现如下:
public class MyClass
{
private static MyClass _instance;
private MyClass()
{
//Do Stuff
}
public static MyClass GetInstance()
{
if(_instance == null)
_instance = new MyClass();
return _instance;
}
}
另一种方法,而不是方法是属性:
private static readonly object LockObject = new object();
private static MyClass _instance;
public static MyClass Instance
{
get
{
lock (LockObject)
{
return _instance ?? (_instance = new MyClass());
}
}
}
尽管我更喜欢第一种方法,因为它更易于实现,即使对于初学者来说,该属性也是一种好方法
答案 1 :(得分:-1)
Singleton类只能有一个实例,如果多次初始化,则意味着您没有正确实现Singleton Design。
您可以检查instance.Hashcode()值,无论您在使用那个Singleton类的实例时,该值都必须保持不变。