Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我想限制一个类的实例数量,我不想使用静态计数来做到这一点,因为使用静态变量(如线程安全)和以下帖子中提到的其他一些缺点:为什么静态变量被认为是邪恶的?.
他们有什么办法我可以做到这一点吗?
这样做的唯一方法是使用工厂模式的一部分。你有一个类对象,它创建另一个类的对象,并且在每次“新”调用时,你增加你的计数器,在这种情况下它是一个非静态类变量。
如果您不想使用静态字段来计算您的实例,您可以定义一个实例字段并使用 Interlocked.Decrement(out counter),此方法以原子方式递减您的计数器。
这是一种减少整数的线程安全方法,因此在减少计数之间不会发生竞争条件。