首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

List 的回收有关问题 求解

2013-03-19 
List 的回收问题 求解本帖最后由 assicen 于 2013-03-16 13:33:27 编辑static ListMyObj listObj new

List 的回收问题 求解
本帖最后由 assicen 于 2013-03-16 13:33:27 编辑


static List<MyObj> listObj = new List<MyObj>();
..............
void fun()
{
   MyObj myObj1=new MyObj();
   MyObj myObj2=new MyObj();
   listObj.Add(myObj1);
   listObj.Add(myObj2);
   listObj.Clear(); //注意这行
}


在listObj.Clear();后 myObj1 myObj2这两个对象会不会被释放
如果不执行listObj.Clear(); 那么myObj1 myObj2的存活周期是否和listObj一样?
如果执行了listObj[0]=null; 0对应的是myObj1 那么myObj1会不会被释放
谢谢
[解决办法]
在listObj.Clear();后 myObj1 myObj2这两个对象会不会被释放   --如果没有其他引用,会释放
如果不执行listObj.Clear(); 那么myObj1 myObj2的存活周期是否和listObj一样?  ---一样,这里List是static的所以只有对这个变量显式赋值时才有可能释放
如果执行了listObj[0]=null; 0对应的是myObj1 那么myObj1会不会被释放   ---会,只要之后没有再使用变量myObj1
[解决办法]
不会立即被释放,除非你自己写代码释放
垃圾回收会等一段时间判断你不用了才自动释放

热点排行