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; //???
Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top