Condividi tramite


Interfacce generiche

In questo argomento è contenuta una panoramica delle interfacce generiche che offrono funzionalità comuni alle famiglie di tipi generici.

Interfacce generiche

Le interfacce generiche forniscono controparti indipendenti dai tipi a interfacce non generiche per confronti di uguaglianza e ordinamento e per le funzionalità condivise da tipi di insieme generici.

NotaNota

A partire da .NET Framework versione 4, i parametri di tipo di diverse interfacce generiche vengono contrassegnati come covariante o controvariante, fornendo più flessibilità nell'assegnazione e nell'utilizzo di tipi che implementano queste interfacce.Vedere Covarianza e controvarianza nei generics.

Confronti di uguaglianza e ordinamento

Nello spazio dei nomi System le interfacce generiche System.IComparable<T> e System.IEquatable<T>, analogamente alle relative controparti non generiche, definiscono rispettivamente i metodi per i confronti di ordinamento e quelli per i confronti di uguaglianza. I tipi implementano queste interfacce per consentire l'esecuzione di questi confronti.

Nello spazio dei nomi System.Collections.Generic le interfacce generiche IComparer<T> e IEqualityComparer<T> consentono di definire un confronto di ordinamento o di uguaglianza per i tipi che non implementano l'interfaccia generica System.IComparable<T> o System.IEquatable<T> e forniscono un sistema per ridefinire tali relazioni nel caso di tipi che implementano l'interfaccia in questione. Queste interfacce sono utilizzate da metodi e costruttori di molte delle classi di insiemi generiche. È ad esempio possibile passare un oggetto generico IComparer<T> al costruttore della classe SortedDictionary<TKey, TValue> per specificare un ordinamento per un tipo che non implementa un'interfaccia generica System.IComparable<T>. Sono presenti overload del metodo statico generico Array.Sort e del metodo di istanza List<T>.Sort che consentono l'ordinamento di matrici ed elenchi mediante implementazioni generiche di IComparer<T>.

Le classi generiche Comparer<T> e EqualityComparer<T> forniscono classi base per le implementazioni delle interfacce generiche IComparer<T> e IEqualityComparer<T>, nonché confronti di ordinamento e uguaglianza predefiniti mediante le rispettive proprietà Comparer<T>.Default e EqualityComparer<T>.Default.

Funzionalità degli insiemi

L'interfaccia generica ICollection<T> è l'interfaccia di base per i tipi di insieme generici Fornisce la funzionalità di base per l'aggiunta, la rimozione, la copia e l'enumerazione degli elementi. ICollection<T> eredita da interfacce IEnumerable<T> generiche e IEnumerable non generiche.

L'interfaccia generica IList<T> estende l'interfaccia generica ICollection<T> con metodi per il recupero indicizzato.

L'interfaccia generica IDictionary<TKey, TValue> estende l'interfaccia generica ICollection<T> con metodi per il recupero con chiavi. Anche i tipi di dizionari generici della libreria di classi base .NET Framework implementano l'interfaccia IDictionary non generica.

L'interfaccia generica IEnumerable<T> fornisce una struttura di enumeratori generici. L'interfaccia generica IEnumerator<T> implementata dagli enumeratori generici eredita l'interfaccia IEnumerator non generica e i membri MoveNext e Reset, che non dipendono dal parametro di tipo T, vengono visualizzati solo sull'interfaccia non generica. Di conseguenza, qualsiasi consumer dell'interfaccia non generica può utilizzare anche l'interfaccia generica.

Vedere anche

Riferimenti

System.Collections.Generic

System.Collections.ObjectModel

Concetti

Generics in .NET Framework

Insiemi generici in .NET Framework

Delegati generici per la modifica di matrici ed elenchi

Vantaggi e limitazioni di generics

Covarianza e controvarianza nei generics