我想限制一个类的实例数,我不希望使用静态计数,因为使用静态变量(如线程安全性)和以下帖子中提到的其他一些缺点:Why are static variables considered evil?
他们是否可以这样做?
答案 0 :(得分:5)
这样做的唯一方法是使用工厂模式的一部分。你有一个类对象,它创建另一个类的对象,并且在每次'新'调用时,你增加你的计数器,在这种情况下这是一个非静态类变量。
答案 1 :(得分:0)
如果您不想使用静态字段来计算实例,可以定义一个实例字段并使用Interlocked.Decrement(out counter),此方法会原子地减少您的计数器。
它是一种减少整数的线程安全方式,因此在递减计数之间不会出现竞争条件。