【发布时间】:2013-07-19 04:07:49
【问题描述】:
我将项目添加到列表框中,如下所示:
foreach(myObject object in ListOfObjects)
{
mylistbox1.add(object);
}
foreach(myObject object in ListOfObjectsTwo)
{
mylistbox2.add(object);
}
此外,我想在特定条件下删除几个项目。我就是这样做的:
foreach(myObject object in ListOfObjects3)
{
mylistbox1.items.remove(object);
mylistbox2.items.remove(object);
}
这似乎只适用于mylistbox1,但不适用于mylistbox2。当我调试时,我可以看到该项目在那里,并且它具有与我要删除的项目完全相同的属性。当我尝试检查列表框是否包含我试图删除的项目时,它返回 false。
我似乎无法理解它。
【问题讨论】:
-
也许你可以给我们一个初始化你的
ListOfObjects、ListOfObjectsTwo和ListOfObjects3的例子? -
@FSou1 它们是在另一个类中创建的对象,由字符串和布尔值组成。它们被初始化为“ Object o = new Object(string str, bool bl);
-
object不是有效标识符。 -
myObject是否实现了它的Equals方法来比较它的属性?我敢打赌,您将 references 与不同的对象进行比较,即使它们具有相同的属性值。 -
您应该在
myObject中覆盖Equals,否则Remove会尝试使用ReferenceEquals查找对象。引用相等意味着被比较的对象变量引用同一个对象(不仅仅是相等)。