+ -
当前位置:首页 → 问答吧 → List<T>中,Remove和RemoveAt有什么区别?

List<T>中,Remove和RemoveAt有什么区别?

时间:2011-12-12

来源:互联网

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

作者: sld009   发布时间: 2011-12-12

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

请查阅msdn或者文档

作者: cj205   发布时间: 2011-12-12

你上过学吧...你知道老师点名叫“张三”和叫“13号”有什么区别?

自己看MSDN自己好好想去吧...

作者: vrhero   发布时间: 2011-12-12

删不掉元素,是因为不是同一引用。

Remove 最后调用的还是 RemoveAt

作者: Sandy945   发布时间: 2011-12-12

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

作者: wxssaa   发布时间: 2011-12-12

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

作者: qldsrx   发布时间: 2011-12-12