我现在有一个二维List :   List<List<myObject>> myList;myList里有对象若干, 都是用new的方式创建后加入到myList的, 现在我不需要这些对象了, 直接myList.Clear()这样可以清空内存吗?
或者还是用如下方法?
for(int i = 0; i < myList.Count; i++)
{
   myList[i].Clear();
}myList.Clear();
用哪种方法是正确的?

解决方案 »

  1.   

    但是没有这种释放的,myList.Clear();只是清空里面的项,myList还存在。要不 就是myList=null;
    到时垃圾回收的时候 会自动 清除myList所指向向的对象
      

  2.   

    Clear()
    // Removes all elements from the System.Collections.Generic.List<T>.
    不需要这些对象时,垃圾回收由GC来做...
      

  3.   

    我平时都用list.Clear()
    用循环释放 ,我真没有用过。 你可以测试一下,按原理不用循环
      

  4.   


    public void MyMethod()
    {
      for(int i = 0; i < myList.Count; i++)
      {
         myList[i].Clear();
      }  myList.Clear();
      
      for(int i = 0; i < NewList.Count; i++)
      {  
        for(int j = 0; j < NewList[i].Count; j++)
        {
           myObject tmp  = new myObject();
           tmp = NewList.Clone() as myObject
           myList[i].Add(tmp);
        }
      }}//这个方法是每几十秒调用一次, 我应该怎样去释放这些被new出来的资源, C#里没有delete关键字
    //这样会不会造成内存泄露?
      

  5.   

    因为我观察了一下内存的使用情况, 发现并没有释放我所申请的内存大小, GC.Collect()和List.Clear()的方法都用了
      

  6.   

    我写的程序在wince的平台下跑, 哪怕一点点内存泄露都对我很重要!!
      

  7.   

    C# 中垃圾回收由GC来做。定期或内存不够时会进行资源回收,不会出现内存泄漏的
      

  8.   

    Clear会释放对每个List的引用,但是myList的Capacity不会变,可以调用TrimExcess()