我有一個HashSet<int[]> foo
其中int []代表平面中某個點的座標。位置0處的值代表x,位置1處的值代表和。我想覆蓋Equals和GetHashCode方法,如果它的內部值等於給定值,就可以移除一個元素(該點表示爲大小爲2的數組)。如何覆蓋HashSet的等於和GetHash
已經嘗試過:
public override int GetHashCode(){
return this.GetHashCode();
}
public override bool Equals(object obj){
if (obj == null || ! (obj is int[]))
return false;
HashSet<int[]> item = obj as HashSet<int[]>;
return item == this;
}
在我的課堂迷宮。
在此先感謝。
編輯
我找到了一種方法來做到這一點
class SameHash : EqualityComparer<int[]>
{
public override bool Equals(int[] i1, int[] i2)
{
return i1[0] == i2[0] && i1[1] == i2[1];
}
public override int GetHashCode(int[] i)
{
return base.GetHashCode();
}
}
什麼是座標?你有什麼嘗試,它是如何失敗? –
我編輯了帖子。 –
我不知道你在做什麼。你認爲你對GetHashCode的重寫正在做什麼? –