如何找出一个类创建了多少个对象

如何在C#中找出一个类创建了多少个对象?

您必须在构造中增加一个静态计数器:

public class Foo { private static long instanceCount; public Foo() { // Increment in atomic and thread-safe manner Interlocked.Increment(ref instanceCount); } } 

几个笔记:

  • 这不计算当前内存实例的数量 – 这将涉及使用终结器来递减计数器; 我不建议这样做
  • 这不包括通过序列化等可能绕过构造函数的某些机制创建的实例
  • 显然这只有在你修改课程时才有效; 例如,你无法找到创建的System.String实例的数量 – 至少在没有挂钩调试/分析API的情况下

为什么您不想要这些信息呢?

这是你设计的课程吗?

如果是这样,请在类中添加一个计数器,该计数器在构造函数中递增并在Dispose中递减。

您可以将其设置为性能计数器,以便在性能监视器中对其进行跟踪。