Construtor de EqualityComparer
Esta classe implementa a interface IEqualityComparer<T>
e tem o objetivo principal prover um método de criação para objetos concretos que implementam esta interface de comparação.
Com isso é possível utilizar métodos como o Distinct
do namespace System.Linq
de forma dinâmica e realizando qualquer tipo de comparação, mesmo entre objetos do mesmo tipo.
Caso a interface fosse implementada diretamente na classe que será comparada, haveria apenas uma de forma de realizar uma comparação entre objetos desta classe.
Com esta implementação torna-se possível implementar comparações genéricas.
Propriedades
Nome
Tipo
Descrição
Comparer
Func<T, T, bool>
Propriedade para armazenar o método que será utilizado para realizar a comparação entre os objetos.
HashCodeGetter
Func<T, int>
Propriedade para armazenar o método que será utilizado para realizar a operação para obter o HashCode do objeto.
Métodos
Nome
Parâmetros
Retorno
Descrição
Create
Func<T, T, bool> comparer
Func<T, int> hashCodeGetter
EqualityComparerBuilder
Cria uma nova instância deste objeto encapsulando as funções informadas no parâmetro para executar os métodos da interface IEqualityComparer<T>.
Equals
T x
T y
bool
Método da interface IEqualityComparer<T>.
GetHashCode
T obj
int
Método da interface IEqualityComparer<T>.
Como Usar
Para criar uma nova instância de um comparador basta utilizar o método estático Create
informando as funções que devem ser utilizadas na comparação do objeto.
Veja o exemplo a seguir:
No exemplo anterior, o método Distinct
não levará mais em conta a refêrencia do objeto Product
, mas sim as comparações feitas através do objeto comparer
.
Você também pode informar os métodos anônimos diretamente no parâmetro do método Create
:
Last updated