0
我要实现equals为下面的类,其中替补的顺序是不相关的什么是检查的正确方法如果两个ISets有
class Entity {
ISet<SubEntity> Subs;
}
这可以在一个内部循环比较被称为相同的实体几千个实体,所以表现可能是一个问题。
从我粗略的探索中我相信最好的选择是other.Subs.ExclusiveOr(Subs).IsEmpty
。它是否正确?
我要实现equals为下面的类,其中替补的顺序是不相关的什么是检查的正确方法如果两个ISets有
class Entity {
ISet<SubEntity> Subs;
}
这可以在一个内部循环比较被称为相同的实体几千个实体,所以表现可能是一个问题。
从我粗略的探索中我相信最好的选择是other.Subs.ExclusiveOr(Subs).IsEmpty
。它是否正确?
这将是实现所需功能的正确方法。如果性能成为问题,(当然在分析之后),那么你可以考虑增加一些启发式算法来确定两个集合是否具有相同的元素。 Jon Skeet有一篇关于优化LINQ to Objects的博客系列,你可以看看this post。它调查可用于确定集合相等的Intersect方法的操作。