一類我有這樣一個類:的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