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

Pra*_*ady 7 c# object

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

Jon*_*eet 13

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

public class Foo
{
    private static long instanceCount;

    public Foo()
    {
        // Increment in atomic and thread-safe manner
        Interlocked.Increment(ref instanceCount);
    }
}
Run Code Online (Sandbox Code Playgroud)

几个笔记:

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

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