Condividi tramite


Confronti e ordinamenti all'interno degli insiemi

Aggiornamento: novembre 2007

Le classi di System.Collections eseguono confronti in quasi tutti i processi di gestione degli insiemi, ricercando l'elemento da rimuovere o restituendo il valore di una coppia chiave-valore.

Vengono utilizzati due costrutti per i confronti. Il metodo Equals, ereditato o derivato da Object, restituisce semplicemente un valore booleano per indicare se i due oggetti sono uguali. I metodi IComparable.CompareTo e IComparer.Compare restituiscono un valore integer che indica come i due valori si confrontano tra di loro. Equals viene utilizzato per i controlli di eguaglianza, mentre i metodi IComparable.CompareTo e IComparer.Compare e le rispettive controparti sulle interfacce generiche, i metodi IComparer<T>.Compare e IComparable<T>.CompareTo, vengono utilizzati per l'ordinamento.

I confronti possono essere eseguiti tra gli elementi dell'insieme o tra un elemento e un valore specificato. Quando gli operatori di confronto non sono specificati in modo esplicito, almeno uno degli oggetti confrontati dovrebbe implementare l'interfaccia IComparable ed essere in grado di confrontarsi con l'altro oggetto.

Alcune classi dispongono di metodi che accettano l'implementazione di IComparer come parametro. Quando si utilizzano questi metodi e il parametro IComparer non è un riferimento null (Nothing in Visual Basic), non è necessario che gli oggetti confrontati implementino IComparable. È sempre buona norma, tuttavia, implementare IComparable su tutte le classi che possono essere utilizzate come valori in un insieme di elenchi o come chiavi in un insieme di dizionari.

Alcuni overload dei costruttori per gli insiemi dizionario accettano un'implementazione di IComparer, che viene utilizzata per confrontare le chiavi quando sono richiesti confronti. Array dispone di overload del relativo metodo Sort che accettano un'implementazione di IComparer, utilizzata solo per la chiamata specifica al metodo Sort.

L'impostazione di lingua corrente del sistema può influire sul confronto e l'ordinamento degli elementi di un insieme. Per impostazione predefinita, i confronti e gli ordinamenti nelle classi Collections sono dipendenti dalla lingua. Per ignorare l'impostazione della lingua e ottenere uniformità nei risultati di confronti e ordinamenti, utilizzare InvariantCulture con overload di membri che accettino un oggetto CultureInfo. Per ulteriori informazioni, vedere Esecuzione di operazioni sulle stringhe indipendenti dalla lingua negli insiemi e Esecuzione di operazioni sulle stringhe indipendenti dalla lingua nelle matrici.

Vedere anche

Riferimenti

IComparer

IComparer<T>

IComparable

IComparable<T>

Altre risorse

Creazione e modifica degli insiemi