我有:
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;
}
}
}
}
我需要将此比较器传递给字典上的包含但我很挣扎。我看到字典IEqualityComparer
在构造函数中实现了一些东西,但是:
Dictionary<int, MyClass> ItemList = new Dictionary<int, MyClass>(new MyClass.Comparer());
似乎不起作用并在编译时引发错误。
我假设我需要在KeyValuePair
某处实现某些类型,但我不确定在哪里。
如果我在正常情况下这样做,List<MyClass>
那么List.Contains(Obj, new MyClass.Comparer())
会起作用,但在这种情况下不会。