我在一段程序中使用了List<T>中的Remove,发现在有的时候删除不掉元素,检查后发现元素并不==Null,但是返回值为false,改用RemoveAt后就正常了,而且RemoveAt(i)的i就是Remove(c)中的c元素的索引,为什么啊?

解决方案 »

  1.   

    额 Remove和RemoveAt。
    Remove删除的是匹配的第一项。比如你的list里面有2个相同的项。那么就删除第一个。后面的不删除
    RemoveAt是删除索引下的项请查阅msdn或者文档
      

  2.   

    你上过学吧...你知道老师点名叫“张三”和叫“13号”有什么区别?自己看MSDN自己好好想去吧...
      

  3.   

    删不掉元素,是因为不是同一引用。Remove 最后调用的还是 RemoveAt
      

  4.   

    估计你用Remove(c)的时候,c传入的不是你想要删除的元素(就叫c1吧)。可能c1的引用变了,或者c是c1的复制,也不指向一个对象。
    RemoveAt(i)肯定就产出i索引下的元素了。
      

  5.   

    删不掉可能是因为你用了Linq创建了一个副本List<T>操作。