le interfacce IComparer
(sia quella generica che quella non generica) consentono di confrontare due istanze l'una con l'altra.
Il metodo Compare
consente di confrontare un oggetto stesso con un'altra istanza. Offcourse, quando l'istanza corrente è nullo, in questo caso riceverai un NullReferenceException
, dal momento che chiami Compare
in un'istanza "nulla". Una classe che implementa IComparer
può risolvere questo problema.
Così, quando si implementa l'interfaccia IComparer, avrete una classe che ha un metodo 'Confronta', che può essere chiamato in questo modo:
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.
}
}
questo ti permette di fare questo:
var c = new MyObjectComparer();
var one = new MyObject();
var two = new MyObject();
c.Compare (one, two);
Quando si crea un'istanza di un Hashtable
con il costruttore in cui si specifica l'istanza IEqualityComparer
, questo significa che la data IEqualityComparer
saranno utilizzati per determinare se una certa chiave è già presente nel Hashtable.
In caso contrario, verrà utilizzato il metodo Confronto dell'oggetto chiave.
fonte
2011-10-13 08:24:13