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

时间:2010-03-06 09:56:40

标签: c# object

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

2 个答案:

答案 0 :(得分:13)

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

public class Foo
{
    private static long instanceCount;

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

几点说明:

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

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

答案 1 :(得分:1)

这是你设计的课程吗?

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

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