IComparer
Andiamo ad
analizzare due interfacce: IComparer e IComparable.
Queste
interfacce sono spesso utilizzate insieme e anche se le interfacce sono simili
e hanno nomi simili, gli scopi che essi servono sono leggermente diversi.
In generale,
se
si dispone di una matrice di tipi (ad esempio la stringa o i tipi integer
) che già supportano IComparer,
è possibile ordinare la matrice senza fornire alcun riferimento esplicito a IComparer.
In questo caso, gli elementi della matrice vengono proiettati per
l’implementazione predefinita di IComparer(Comparer.Default) per l’utente.
Tuttavia,
se desidera eseguire l'ordinamento e per confrontare gli oggetti
personalizzati, è necessario implementare una o entrambe queste interfacce.
1.Un oggetto che implementa IComparable
comunica implicitamente al .NET Framework che può essere confrontato con
altri oggetti, stabilendo se uno di essi è maggiore, minore o uguale all'altro
e abilitando in questo modo l'ordinamento automatico attraverso il metodo Sort
di una collection. Infatti, tale metodo confronta uno ad uno ogni elemento di
una collezione o di un array e tramite la funzione CompareTo che ogni interfaccia IComparable
espone e li ordina in ordine crescente o decrescente. CompareTo è una funzione di istanza che implementa IComparable. CompareTo e ha dei risultati predefiniti:
·
restituisce 1 se l'oggetto
passato come parametro è minore dell'oggetto dalla quale viene richiamata;
·
0 se è uguale e -1 se è
maggiore.
2. IComparer rappresenta un oggetto che deve eseguire la comparazione tra due altri oggetti, facendo quindi da tramite nell'ordinamento. Dato che Sort accetta in una delle sue versioni un oggetto IComparer, è possibile ordinare una lista di elementi con qualsiasi criterio si voglia semplicemente cambiando il parametro.
Usando questo meccanismo è possibile ordinare qualsiasi tipo di lista o collezione (tranne SortedList, che si ordina automaticamente), in modo semplice e veloce, particolarmente utile nell'ambito delle liste visuali a colonne.
ESEMPIO
link: http://martinaroma.blogspot.it/p/esercizi.html
Nessun commento:
Posta un commento