2 回答

TA貢獻(xiàn)1934條經(jīng)驗(yàn) 獲得超2個(gè)贊
看起來(lái)你想要的是一個(gè) Hashset,因?yàn)殒I和值是相同的,你不想要重復(fù)。
您將需要這個(gè)類來(lái)說(shuō)明哪些對(duì)象是相等的。
class MyObjectEqualityComparer : IEqualityComparer<MyObject>
{
MyObjectEqualityComparer()
{
}
public static readonly MyObjectEqualityComparer Default = new MyObjectEqualityComparer();
public bool Equals(MyObject x, MyObject y)
{
return x.Id1 == y.Id1 && x.Id2 == y.Id2 && x.Id3 == y.Id3;
}
public int GetHashCode(MyObject obj)
{
return obj.Id1.GetHashCode() ^ obj.Id2.GetHashCode() ^ obj.Id3.GetHashCode();
}
}
然后做一個(gè)哈希集
HashSet<MyObject> set = new HashSet<MyObject>(MyObjectEqualityComparer.Default);
MyObject object1 = new MyObject(1,2,3);
MyObject object2 = new MyObject(2,2,3);
MyObject object3 = new MyObject(2,2,3);
if(set.Add(object1))
{
// item was added.
}
else
{
// item already exist.
}

TA貢獻(xiàn)1900條經(jīng)驗(yàn) 獲得超5個(gè)贊
覆蓋
Equals
+GetHashCode
inMyObject
或將自定義傳遞
IEqualityComparer<MyObject>
給字典構(gòu)造函數(shù)
但是將這個(gè)對(duì)象存儲(chǔ)為鍵和值是沒(méi)有意義的。也許你想用 aHashSet<MyObject>
代替。
- 2 回答
- 0 關(guān)注
- 138 瀏覽
添加回答
舉報(bào)