可能重复:
我怎么能找到多少个对象在C#中创建一个类的
是否有可能得到它是积极的(创建,尚未销毁)选定类实例的数量?
例如
public class MyClass
{
}
c1 = new MyClass();
c2 = new MyClass();
count = GetActiveInstances(typeof(MyClass))
应该返回2.如果GC破坏任何这些类的则1或0。
可能重复:
我怎么能找到多少个对象在C#中创建一个类的
是否有可能得到它是积极的(创建,尚未销毁)选定类实例的数量?
例如
public class MyClass
{
}
c1 = new MyClass();
c2 = new MyClass();
count = GetActiveInstances(typeof(MyClass))
应该返回2.如果GC破坏任何这些类的则1或0。
你可以拥有你的程序全局静态计数器。
这是一个简单的线程安全的解决方案:
class MyClass
{
static int counter = 0;
public MyClass()
{
Interlocked.Increment(ref counter);
}
~MyClass()
{
Interlocked.Decrement(ref counter);
}
}
也看看下面的类似的问题- 计数类方法中的类的对象的数
这个 :
public class MyClass
{
private static int instances = 0;
public MyClass()
{
instances++;
}
~MyClass()
{
instances--;
}
public static int GetActiveInstances()
{
return instances;
}
}
使用 :
MyClass c1 = new MyClass();
MyClass c2 = new MyClass();
int count = MyClass.GetActiveInstances();
只有当你实现构造函数(增量)和终结(递减)内的计数机制。 但即使这样,也不能说明这是真正不活动的情况下(没有人有任何引用它们),但尚未领取的呢。
此外,添加一个终结的一类-无论多么微不足道的- 将性能产生不利影响 ,这是反对这样做的理由。
public class MyClass{
static int count;
static object _lock = new object();
public MyClass(){
lock(_lock){
count++;
}
}
~MyClass(){
lock(_lock){
count--;
}
}
}
我不知道一个内置的机制,但你总是可以在构造函数incrase私人静态变量。
public class MyClass
{
static int instances = 0;
public MyClass(){
instances++;
}
~MyClass(){
instances--;
}
}
没有尝试过,但应该工作。
试试这个:
public class MyClass
{
public static int activeCount = 0;
public MyClass()
{
activeCount++;
}
~MyClass()
{
activeCount--;
}
}
//In the main
MyClass testClass1 = new MyClass();
MyClass testClass2 = new MyClass();
Console.WriteLine(MyClass.activeCount);
这样的事情是不可能的,但你可以做soemthing像
注:Children子可也仅仅能维持数int值。
class mytype
{
public static List<mytype> classinstance = new List<mytype>();
public mytype()
{
classinstance.Add(this);
}
public removeclass(mytype t)
{
classinstance.Remove(t);
t=null;
}
public int ActiveCount
{
get { classinstance.Count; }
}
}
public class MyClass
{
public static int countinstance =0;
MyClass(){ countinstance ++;}
~ MyClass() {countinstance --; }
}
简单和容易获得实例由countinstance活跃
您可以通过一个静态变量在类中的计数尝试一下,增加它的constructor
和递减在destructor
。可能这可以帮助你。