看了介绍,内存回的对象是该对象不在被引用,假如有类似下面一种情况
private Form A=null;
private void myfun()
{
for(int i=0;i<10;i++)
{
A=new Form();
……
}
}
这是一个简化的例子,在函数中A被申请了10次(如果该函数为计时器,则要被申请n次),因为A是放在模块里面的,new了一个后,再new另外一个时,原来的对象是否就标记为为效?还是指向A,如果是,那么直到该模块完全退出时占用的内存才会被回收,对于一个系统服务程序,这是不行的,我现在的做法是:
private void myfun()
{
for(int i=0;i<10;i++)
{
if(A!=null)
A.Dispose();
A=new Form();
……
}
}
不知道上面哪种方式正确,第二种方法是否是画蛇添足?
private Form A=null;
private void myfun()
{
for(int i=0;i<10;i++)
{
A=new Form();
……
}
}
这是一个简化的例子,在函数中A被申请了10次(如果该函数为计时器,则要被申请n次),因为A是放在模块里面的,new了一个后,再new另外一个时,原来的对象是否就标记为为效?还是指向A,如果是,那么直到该模块完全退出时占用的内存才会被回收,对于一个系统服务程序,这是不行的,我现在的做法是:
private void myfun()
{
for(int i=0;i<10;i++)
{
if(A!=null)
A.Dispose();
A=new Form();
……
}
}
不知道上面哪种方式正确,第二种方法是否是画蛇添足?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货