gpt4 book ai didi

c# - ObservableCollection.Remove 不起作用,即使该对象在列表中

转载 作者:太空宇宙 更新时间:2023-11-03 13:23:21 26 4
gpt4 key购买 nike

我在 C# 中工作。我想从 ObservableCollection<Catalog> 中删除目录(我之前定义的对象类型) .

我知道当你调用Remove , ContainsAdd ...虚拟机调用 Equals “定位”要添加或删除的对象。所以这是我的 Catalog.Equals定义:

public override bool Equals(object obj) 
{
Catalog cat = (Catalog)obj;
return (this.Name.Equals(cat.Name));
}

public bool Equals(Catalog cat)
{
return (this.Name.Equals(cat.Name));
}

但是当我执行 myCollection.Remove(catlg) (catlg 是 Catalog 类型),我得到一个 InvalidCastException在以下行:Catalog cat = (Catalog)obj .

为什么这里的转换无效?为什么这里不调用 Equals(Catalog cat) 而不是 Equals(object obj) 定义?

当然,Remove不起作用,即使 Console.WriteLine(myCollection.Contains(catlg))是真的。

最佳答案

尝试实现 IEquatable<Catalog> .

并去掉 override也许?

关于c# - ObservableCollection.Remove 不起作用,即使该对象在列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23336567/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com