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

sld009 2011-12-12 05:44:52
我在一段程序中使用了List<T>中的Remove,发现在有的时候删除不掉元素,检查后发现元素并不==Null,但是返回值为false,改用RemoveAt后就正常了,而且RemoveAt(i)的i就是Remove(c)中的c元素的索引,为什么啊?
...全文
1246 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
sld009 2011-12-12
  • 打赏
  • 举报
回复
不好意思 是我肤浅了,一点小失误 误会 结贴了
qldsrx 2011-12-12
  • 打赏
  • 举报
回复
删不掉可能是因为你用了Linq创建了一个副本List<T>操作。
wxssaa 2011-12-12
  • 打赏
  • 举报
回复
估计你用Remove(c)的时候,c传入的不是你想要删除的元素(就叫c1吧)。可能c1的引用变了,或者c是c1的复制,也不指向一个对象。
RemoveAt(i)肯定就产出i索引下的元素了。
阿非 2011-12-12
  • 打赏
  • 举报
回复
删不掉元素,是因为不是同一引用。

Remove 最后调用的还是 RemoveAt
vrhero 2011-12-12
  • 打赏
  • 举报
回复
你上过学吧...你知道老师点名叫“张三”和叫“13号”有什么区别?

自己看MSDN自己好好想去吧...
Mr-Jee 2011-12-12
  • 打赏
  • 举报
回复 1
额 Remove和RemoveAt。
Remove删除的是匹配的第一项。比如你的list里面有2个相同的项。那么就删除第一个。后面的不删除
RemoveAt是删除索引下的项

请查阅msdn或者文档

110,532

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧