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

移除list集合中某项的有关问题,很郁闷的有关问题。求指教。多谢

2013-03-01 
移除list集合中某项的问题,很郁闷的问题。求指教。谢谢有这么个集合Liststring li2 new Liststring {

移除list集合中某项的问题,很郁闷的问题。求指教。谢谢
有这么个集合
List<string> li2 = new List<string> { "张三", "张三", "李四", "张三", "王五", "李四" };

然后

 li2.Remove(li2[3]);

现在集合中的值应该是

 List<string> li2 = new List<string> { "张三", "张三", "李四", "王五", "李四" };

可结果变成了这个

   List<string> li2 = new List<string> { "张三", "李四", "张三", "王五", "李四" };

这是为什么呢?难道当你删除指定某项时(li2.Removeli2[3]),

list会从第一个开始去找是否有你索引对应的值吗?

在li[3]索引前找到了就删除,当找到li[3]时,li[3]前面没有你的索引对应的值。。就在删除li[3]是吗
list
[解决办法]
是的,你的li2.Remove(li2[3]);代码等价
li2.Remove("张三");,所以删除了第一个张三

如果li2里面是引用类型的对象,则li2.Remove(li2[3]);代码可以删除第三个对象,sting类型不行的,第一个"张三"==第三个"张三"
所以你想删除第三个张三,把你的代码改成
li2.RemoveAt(3); //直接删除第3个索引位置的值
[解决办法]
结果没错
 li2.Remove(li2[3]);
li2[3]是表示张三,
Remove表示移除第一个匹配项,所以移除的是第一个张三
[解决办法]

引用:
结果没错
 li2.Remove(li2[3]);
li2[3]是表示张三,
Remove表示移除第一个匹配项,所以移除的是第一个张三

你要移除指定索引的话,可以用RemoveAt方法

热点排行