我通常不会在Windows上开发,但最近我不得不在C#上做一些工作,而我正试图解决一些问题。我一直在寻找MSDN,但无法找到我正在寻找的东西。
无论如何,据我所知,List被编入索引,就像数组一样。但是,如果我使用RemoveAt()删除位置X的项目,那么它会移动所有项目,以便新项目现在填充位置X吗?或者位置X只是空的?
如果你有一个字符串或整数列表,使用Remove()似乎相当简单,但是如果你有一个对象列表,可以使用Remove()来删除一个对象字段具有特定值的项目?
例如
假设我有列表,其中每个汽车对象都有一个品牌,型号和&颜色。
我可以按照
的方式做点什么 cars.Remove(cars.color="red");
我确信这是非常错误的,但我来自PHP背景,所以我现在对很多语法很困惑。
由于
答案 0 :(得分:5)
List<T>
不会漏洞
删除项目会将所有后续项目向上移动一次。
您可以通过使用lambda表达式调用RemoveAll()
来删除与条件匹配的所有项目:
list.RemoveAll(o => o.Color == "Red");
答案 1 :(得分:3)
如果我使用RemoveAt()删除了位置X的项目,那么它会 移动所有项目,以便新项目现在填充位置X?
是
如果你有一个对象列表,可以使用Remove()删除 对象字段具有特定值的项目?
是的,使用RemoveAll
方法:
cars.RemoveAll(c => c.color == "red");
答案 2 :(得分:0)
当物品被移除时,下一个物品将被占用。由于列表是集合,您可以使用lambda并删除所有
Cars.RemoveAll( x=> x.colour == "red");
将删除所有车辆。