Comparando dois listos em C#
-
19-09-2019 - |
Pergunta
Eu tenho uma aula chamada
MyClass
Essa classe herda iequatable e os implementos são iguais à maneira como eu preciso. (Significado: quando comparo dois objetos MyClass Tyupe individualmente no código, ele funciona)
Eu então crio duas lista:
var ListA = new List<MyClass>();
var ListB = new List<MyClass>();
// Add distinct objects that are equal to one another to
// ListA and ListB in such a way that they are not added in the same order.
Quando vou comparar Liste e Listb, devo me tornar verdadeiro?
ListA.Equals(ListB)==true; //???
Solução
Experimente o seguinte
ListA.SequenceEquals(ListB);
SequenceEquals é um método de extensão disponível no Enumerable
classe. Isso está disponível por padrão nos projetos C# 3.5, pois vem com o System.linq
Outras dicas
Para responder à sua pergunta, não, você não deve se tornar verdadeiro. List
e List<T>
Não defina. Equals, então eles herdam objeto.equals, que verifica o seguinte:
public static bool Equals(object objA, object objB)
{
return ((objA == objB) || (((objA != null) && (objB != null)) && objA.Equals(objB)));
}
E objA.Equals(objB)
é virtual. Se bem me lembro, a implementação padrão apenas verifica a igualdade de referência (apontando para o mesmo objeto na memória), para que seu código retornasse false.