我有这样一堂课:
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();
}
}
Run Code Online (Sandbox Code Playgroud)
如您所见,如果两个Edge列表相同,那么我认为Cycles它们是相同的.
现在的问题是如何实施GetHashCode()?
我尝试过Edges.GetHashCode(),但问题是,两个List<Cycle>具有相同Cycle对象但订单不同的将被视为不同,即使它们应该是相同的.
lep*_*pie 14
你可以这样做:
override int GetHashCode()
{
return Edges.Distinct().Aggregate(0, (x,y) =>x.GetHashCode() ^ y.GetHashCode());
}
Run Code Online (Sandbox Code Playgroud)
这很简单,但应该是一致的.
| 归档时间: |
|
| 查看次数: |
4728 次 |
| 最近记录: |