在不使用静态变量的情况下限制创建的实例数

时间:2012-11-03 12:01:35

标签: c# static

我想限制一个类的实例数,我不希望使用静态计数,因为使用静态变量(如线程安全性)和以下帖子中提到的其他一些缺点:Why are static variables considered evil?

他们是否可以这样做?

2 个答案:

答案 0 :(得分:5)

这样做的唯一方法是使用工厂模式的一部分。你有一个类对象,它创建另一个类的对象,并且在每次'新'调用时,你增加你的计数器,在这种情况下这是一个非静态类变量。

答案 1 :(得分:0)

如果您不想使用静态字段来计算实例,可以定义一个实例字段并使用Interlocked.Decrement(out counter),此方法会原子地减少您的计数器。

它是一种减少整数的线程安全方式,因此在递减计数之间不会出现竞争条件。