Tom*_*mas 12 .net c# class object
可能重复:
如何在C#中找出创建了一个类的对象数量
是否有可能获得所选类的活动(已创建但尚未销毁)的实例数?
例如
public class MyClass { }
...
var c1 = new MyClass();
var c2 = new MyClass();
count = GetActiveInstances(typeof(MyClass))
Run Code Online (Sandbox Code Playgroud)
应该返回2.如果GC破坏这些类中的任何一个,则为1或0.
Dor*_*hen 22
您可以在程序中保存全局静态计数器.
这是一个简单的线程安全解决方案:
class MyClass
{
static int counter = 0;
public MyClass()
{
Interlocked.Increment(ref counter);
}
~MyClass()
{
Interlocked.Decrement(ref counter);
}
}
Run Code Online (Sandbox Code Playgroud)
还要看一下下面这个类似的问题 - 在类方法中计算类类型的对象数
这个 :
public class MyClass
{
private static int instances = 0;
public MyClass()
{
instances++;
}
~MyClass()
{
instances--;
}
public static int GetActiveInstances()
{
return instances;
}
}
Run Code Online (Sandbox Code Playgroud)
使用 :
MyClass c1 = new MyClass();
MyClass c2 = new MyClass();
int count = MyClass.GetActiveInstances();
Run Code Online (Sandbox Code Playgroud)