【发布时间】:2013-12-05 14:53:37
【问题描述】:
我有一些方法,例如:
public void RemoveItem(ObservableCollection<SomeClass> collection, SomeClass instance)
{
if(collection.Contains(instance))
{
collection.Remove(instance);
}
}
首先,即使集合包含实例,if 语句仍然返回false。
其次,我删除了if语句,只是让集合可以删除实例。并且在执行之后,集合仍然保留其原始项目,其中仍然包括实例。
这是参考问题,但如何解决?我只想从 ObservableCollection 中删除一项并保留其 Observable 功能(这让我感到困惑 here)。
【问题讨论】:
-
Is it the Reference problem- 可能,是的。发布您的完整代码。collection和instance来自哪里?你是如何构建这个系列的? -
你有重新定义 SomeClass 中的 Equals 方法吗?
-
不要做
if (collection.Contains(instance)) { collection.Remove(instance); }。Remove方法会检查是否有要删除的内容,如果没有,则直接返回false。