C# List.Remove(object);

本文关键字:object List Remove | 更新日期: 2023-09-27 18:26:44

我试图从列表中删除一个对象,但它似乎不起作用。

在这个场景中,我有一个称为shape的对象和一个名为shapes的对象集合。

我试图通过构建一个新的List<Shape> shapesInSameColumn

List<Shape> shapesInSameColumn = new List<Shape>();
foreach (var shape in shapes)
{
   if (fallingShape.ColumnNumber == shape.ColumnNumber)
   {
      shapesInSameColumn.Add(shape);
   }
}

我现在想做的是从上面的集合中只删除一个对象。我通过:

shapesInSameColumn.Remove(fallingShape);

fallingShape恰好在索引1处。但是,当我执行.Remove时,它会删除索引0处的对象。

如何解决此问题?

C# List.Remove(object);

if (fallingShape.ColumnNumber == shape.ColumnNumber &&
     !object.ReferenceEquals(fallingShape,shape))
{
  shapesInSameColumn.Add(shape);
}

不要删除,甚至不要将其添加到shapesInSameColumn

这里对fallingape和shape的引用进行了比较。现在,有一种可能性是,下落形状和形状都有相同的列编号,但对象不同。在这种情况下,添加它,否则就是不添加它。

尝试低于

 shapesInSameColumn.RemoveAll(s => somecondition);

例如,您需要删除ID等于1 的形状

shapesInSameColumn.RemoveAll(s => s.ID ==1);
相关文章: