las interfaces IComparer
(genéricas y no genéricas) le permiten comparar dos instancias entre sí.
El método Compare
le permite comparar un objeto con otra instancia. Por supuesto, cuando la instancia actual es nula, obtendrá un NullReferenceException
en este caso, ya que llama al Compare
en una instancia 'nula'. Una clase que implementa IComparer
puede solucionar este problema.
Por lo tanto, cuando se implementa la interfaz IComparer, tendrá una clase que tiene un método 'Comparar', que se puede llamar así:
public class MyObjectComparer : IComparer<MyObject>
{
public int Compare(MyObject first, MyObject second)
{
// implement logic here to determine whether first is less, greater or equal then second.
}
}
Esto le permite hacer esto:
var c = new MyObjectComparer();
var one = new MyObject();
var two = new MyObject();
c.Compare (one, two);
Cuando se instancia un Hashtable
con el constructor donde se especifica la instancia IEqualityComparer
, esto significa que la dada IEqualityComparer
se utilizarán para determinar si una determinada clave ya está presente en la tabla hash.
De lo contrario, se usará el método de comparación del objeto clave.