iam使用c#并有一个问题,如何使用静态字段来计算类中的实例数,请在内存方面进行校准,提前谢谢。
答案 0 :(得分:2)
要简单计算构造的数量,请声明一个静态字段并在instance constructor中使用Interlocked.Increment
以线程安全的方式增加静态字段。
如果您想计算实时对象,您还需要在终结器中Interlocked.Decrement
该字段(即C# destructor)。但请注意,添加终结器会使对象通过终结队列,从而进行垃圾收集less efficient。
根据您定义“实时”对象的方式,您可能会有兴趣在Interlocked.Decrement
实施中添加IDisposable.Dispose
。
答案 1 :(得分:1)
只需在您的类的构造函数中添加一个计数器
class MyClass
{
static int instanceCount = 0;
public MyClass()
{
instanceCount++;
}
}
每次创建类的实例时,构造函数都会运行。静态变量由创建的类的所有实例共享。
答案 2 :(得分:1)
你可以使用构造函数和析构函数来实现你想要的,但是你不应该真的需要知道你的类有多少实例存在。这听起来好像是以错误的方式解决问题。
class MyClass
{
static int instances = 0;
public MyClass()
{
instances++;
}
~MyClass()
{
instances--;
}
}
请注意,不会立即调用类的析构函数。由垃圾收集器决定何时收集类的实例,因此在调用析构函数时。
答案 3 :(得分:0)
像
这样的东西class someclass
{
private static int instanceCounter;
public someclass() { someclass.instanceCounter++; }
}