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处的对象。
如何解决此问题?
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);