一类我有这样一个类:的GetHashCode用一个列表对象
public class Cycle
{
public List<int> Edges
{
get;
private set;
}
public override bool Equals(object obj)
{
Cycle cycle = (Cycle)obj;
var list1 = cycle.Edges;
var list2 = Edges;
var same = list1.Except(list2).Count() == 0 &&
list2.Except(list1).Count() == 0;
return same;
}
public override int GetHashCode()
{
// return Edges.GetHashCode();
}
}
正如你可以看到,如果两个Edge
列表是相同的,那么我认为在Cycles
一样。
现在的问题是如何实施GetHashCode()
?
我试过Edges.GetHashCode()
,但问题是,两个List<Cycle>
,与Cycle
对象,但订单不同,将被视为不同,即使它们应该是相同的。
'除了'是一个设置操作,它只给你不同的项目。如果不同的项目都是重要的,那么可能使用'HashSet'是一个更好的选择。它有'HashSet .CreateSetComparer'这一切都是免费的。在任何情况下,如果你想比较不同的项目只是为了相等,那么'!任何'比'Count == 0'更高效。 (list1).Any();&。 –
nawfal
2014-08-11 06:13:20