0

我想限制一个类的实例数量,我不想使用静态计数来做到这一点,因为使用静态变量(如线程安全)和以下帖子中提到的其他一些缺点:为什么静态变量被认为是邪恶的?.

他们有什么办法我可以做到这一点吗?

4

2 回答 2

5

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

于 2012-11-03T12:05:14.637 回答
0

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

这是一种减少整数的线程安全方法,因此在减少计数之间不会发生竞争条件。

于 2012-11-03T22:38:36.377 回答