2 回答
TA贡献1934条经验 获得超2个赞
看起来你想要的是一个 Hashset,因为键和值是相同的,你不想要重复。
您将需要这个类来说明哪些对象是相等的。
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();
}
}
然后做一个哈希集
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贡献1900条经验 获得超5个赞
覆盖
Equals+GetHashCodeinMyObject或将自定义传递
IEqualityComparer<MyObject>给字典构造函数
但是将这个对象存储为键和值是没有意义的。也许你想用 aHashSet<MyObject>代替。
- 2 回答
- 0 关注
- 149 浏览
添加回答
举报
