Comparações e Ordenações Dentro de Coleções
As classes System.Collections realizam comparações em quase todos os processos envolvidos no gerenciamento de coleções, seja a procura pelo elemento para remoção ou o retorno do valor de um par chave-e-valor.
Dois construtores são usados para comparações.O método Equals, tanto herdado, quanto derivado de Object, simplesmente retorna um valor booleano que indica se dois objetos são iguais.O método IComparable.CompareTo e o método IComparer.Compare retornam um número inteiro que indica como os dois valores se comparam em relação um ao outro.Equals é usado para verificações de igualdade; os métodos IComparable.CompareTo e IComparer.Compare e suas contrapartes nas interfaces genéricas, os métodos IComparer<T>.Compare e IComparable<T>.CompareTo, são usados para ordenação.
As comparações podem ser entre elementos da coleção, ou entre um elemento e um valor especificado.Quando os comparadores não são especificados explicitamente, pelo menos de um dos objetos que estão sendo comparados, espera-se que implemente a interface IComparable, e, então, seja capaz de comparar a si próprio com outro objeto.
Algumas classes possuem métodos que aceitam uma implementação de IComparer como um parâmetro.Quando esses métodos são usados e o parâmetro IComparer não é uma referência nula ( Nothing em Visual Basic), os objetos que estão sendo comparados não necessitam, eles mesmos, implementar IComparable.No entanto, é sempre uma boa prática implementar IComparable em todas as classes que podem ser usadas como valores em uma coleção de lista ou como chaves em uma coleção de dicionário.
Algumas sobrecargas do construtor para coleções de dicionário aceitam um IComparer implementação, que é usada para comparar chaves sempre que as comparações são necessárias.Array tem sobrecargas de seu classificar método que aceite um IComparer implementação, que é usada apenas para essa telefonar específica para o classificar método.
A configuração de cultura atual do sistema pode afetar as comparações e ordenações dentro de uma coleção.Por padrão, as comparações e ordenações nas classes Collections são sensíveis à cultura.Para ignorar a configuração da cultura e, portanto, obter resultados de comparação e ordenação consistentes, utilize o InvariantCulture com sobrecarga de membros que aceitam uma CultureInfo.Para obter mais informações, consulte Executando Operações em Sequências de Caracteres Não Sensíveis à Cultura em Coleções e Executando Operações em Sequências de Caracteres Não Sensíveis à Cultura em Matrizes.