tengo una clase tales:GetHashCode para una clase con un objeto de lista
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();
}
}
Como se puede ver, si dos Edge
Las listas son los mismos, entonces considero la Cycles
como el mismo.
El problema ahora es cómo implementar el GetHashCode()
?
me trataron Edges.GetHashCode()
, pero el problema es que dos List<Cycle>
, con los mismos objetos pero Cycle
diferentes órdenes, se considerará diferente, a pesar de que deben ser los mismos.
'Excepto' es una operación de conjunto que solo le proporciona los elementos distintos. Si los elementos distintos son lo único que importa, entonces puede ser que use 'HashSet' es una mejor opción. Tiene 'HashSet .CreateSetComparer' que hace todo esto gratis. En cualquier caso, si desea comparar los elementos distintos solo para la igualdad, entonces '! Any' es más eficaz que' Count == 0'. Como '! List1.Except (list2) .Any() && ! List2.Except (list1) .Any();'. –
nawfal