我正在尝试从列表中删除一个对象但它似乎没有工作。
在这种情况下,我有一个名为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处的对象。
如何解决此问题?
答案 0 :(得分:4)
if (fallingShape.ColumnNumber == shape.ColumnNumber &&
!object.ReferenceEquals(fallingShape,shape))
{
shapesInSameColumn.Add(shape);
}
而不是删除甚至不将其添加到shapesInSameColumn
这里比较了坠落形状和形状的参考。现在,坠落的形状和形状都有可能具有相同的列数但具有不同的对象。在这种情况下,添加它只是不添加它。
答案 1 :(得分:1)
尝试以下
shapesInSameColumn.RemoveAll(s => somecondition);
例如,您需要删除ID等于1的形状
shapesInSameColumn.RemoveAll(s => s.ID ==1);