如何使用静态字段来跟踪从特定类创建的对象的数量
本文关键字:创建 对象 静态 何使用 字段 跟踪 | 更新日期: 2023-09-27 18:11:14
我正在使用c#,并且有一个问题,如何使用静态字段来计算类中的实例数量,请在内存方面进行校准,提前感谢。
要简单地计算构造的数量,声明一个静态字段,并在实例构造函数中使用Interlocked.Increment
以线程安全的方式增加静态字段。
如果你想计数活动对象,你还需要在你的终结器(即c#析构函数)中Interlocked.Decrement
该字段。但是,请注意,添加终结器将使对象经过终结队列,从而降低垃圾收集的效率。
根据您如何定义"活动"对象,您可能对在IDisposable.Dispose
实现中添加Interlocked.Decrement
感兴趣。
只需在类的构造函数中添加一个计数器
class MyClass
{
static int instanceCount = 0;
public MyClass()
{
instanceCount++;
}
}
构造函数在每次创建类的实例时运行。静态变量由创建的类的所有实例共享。
您可以使用构造函数和析构函数来实现您想要的效果,但是您不应该真的需要知道您的类在任何时候存在多少个实例。听起来你好像在用错误的方法解决问题。
class MyClass
{
static int instances = 0;
public MyClass()
{
instances++;
}
~MyClass()
{
instances--;
}
}
注意,类的析构函数不会立即被调用。垃圾收集器决定何时收集类的实例,因此何时调用析构函数。
类似
class someclass
{
private static int instanceCounter;
public someclass() { someclass.instanceCounter++; }
}