私は持っている:
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())
は機能しません。