如何对字典值实现比较器
本文关键字:实现 比较器 字典 | 更新日期: 2023-09-27 18:22:01
我有:
Dictionary<int, MyClass> ItemList = new Dictionary<int, MyClass>();
MyClass类似于:
public class MyClass
{
public int BaseItemID;
public string Description;
public MyClass()
{
}
public class Comparer : IEqualityComparer<MyClass>
{
public bool Equals(MyClass x, MyClass y)
{
if (ReferenceEquals(x, y))
return true;
else if (x == null || y == null)
return false;
return x.BaseItemID == y.BaseItemID;
}
public int GetHashCode(MyClass obj)
{
unchecked
{
int hash = 17;
hash = hash * 23 + obj.BaseItemID.GetHashCode();
return hash;
}
}
}
}
我需要把这个比较器传给字典上的contains,但我很吃力。我看到字典在构造函数中实现了IEqualityComparer
,但是:
Dictionary<int, MyClass> ItemList = new Dictionary<int, MyClass>(new MyClass.Comparer());
似乎不起作用,并在编译时引发错误。
我想我需要在某个地方实现一些KeyValuePair
类型,但我不确定在哪里。
如果我在普通的List<MyClass>
上这样做,那么List.Contains(Obj, new MyClass.Comparer())
会工作,但在这种情况下不会。
如果没有弄错,字典构造函数重载需要IEqualityComparer
public Dictionary(IEqualityComparer<TKey> comparer);
在您的代码中,您传递"TValue的IEqualityComparer",您只能与字典中的键进行比较,而不能与