Interfacce genericheGeneric Interfaces

Questo argomento fornisce una panoramica delle interfacce generiche che forniscono funzionalità comuni a famiglie di tipi generici.This topic provides an overview of generic interfaces that provide common functionality across families of generic types.

Interfacce genericheGeneric Interfaces

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 raccolta generici.Generic interfaces provide type-safe counterparts to nongeneric interfaces for ordering and equality comparisons and for functionality that is shared by generic collection types.

Nota

A partire da .NET Framework 4.NET Framework 4, i parametri di tipo di diverse interfacce generiche vengono contrassegnati come covariante o controvariante, fornendo più flessibilità nell'assegnazione e nell'uso di tipi che implementano queste interfacce.Starting with the .NET Framework 4.NET Framework 4, the type parameters of several generic interfaces are marked covariant or contravariant, providing greater flexibility in assigning and using types that implement these interfaces. Vedere Covarianza e controvarianza.See Covariance and Contravariance.

Confronti di uguaglianza e ordinamentoEquality and Ordering Comparisons

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.In the System namespace, the System.IComparable<T> and System.IEquatable<T> generic interfaces, like their nongeneric counterparts, define methods for ordering comparisons and equality comparisons, respectively. I tipi implementano queste interfacce per consentire l'esecuzione di questi confronti.Types implement these interfaces to provide the ability to perform such comparisons.

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.In the System.Collections.Generic namespace, the IComparer<T> and IEqualityComparer<T> generic interfaces offer a way to define an ordering or equality comparison for types that do not implement the System.IComparable<T> or System.IEquatable<T> generic interface, and they provide a way to redefine those relationships for types that do. Queste interfacce sono usate da metodi e costruttori di molte delle classi di raccolta generiche.These interfaces are used by methods and constructors of many of the generic collection classes. È 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>.For example, you can pass a generic IComparer<T> object to the constructor of the SortedDictionary<TKey,TValue> class to specify a sort order for a type that does not implement generic 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>.There are overloads of the Array.Sort generic static method and the List<T>.Sort instance method for sorting arrays and lists using generic IComparer<T> implementations.

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.The Comparer<T> and EqualityComparer<T> generic classes provide base classes for implementations of the IComparer<T> and IEqualityComparer<T> generic interfaces, and also provide default ordering and equality comparisons through their respective Comparer<T>.Default and EqualityComparer<T>.Default properties.

Funzionalità di raccoltaCollection Functionality

L'interfaccia generica ICollection<T> è l'interfaccia di base per i tipi di raccolta generici.The ICollection<T> generic interface is the basic interface for generic collection types. Fornisce la funzionalità di base per l'aggiunta, la rimozione, la copia e l'enumerazione degli elementi.It provides basic functionality for adding, removing, copying, and enumerating elements. ICollection<T> eredita da interfacce IEnumerable<T> generiche e IEnumerable non generiche.ICollection<T> inherits from both generic IEnumerable<T> and nongeneric IEnumerable.

L'interfaccia generica IList<T> estende l'interfaccia generica ICollection<T> con metodi per il recupero indicizzato.The IList<T> generic interface extends the ICollection<T> generic interface with methods for indexed retrieval.

L'interfaccia generica IDictionary<TKey,TValue> estende l'interfaccia generica ICollection<T> con metodi per il recupero con chiavi.The IDictionary<TKey,TValue> generic interface extends the ICollection<T> generic interface with methods for keyed retrieval. Anche i tipi di dizionari generici della libreria di classi base .NET Framework implementano l'interfaccia IDictionary non generica.Generic dictionary types in the .NET Framework base class library also implement the nongeneric IDictionary interface.

L'interfaccia generica IEnumerable<T> fornisce una struttura di enumeratori generici.The IEnumerable<T> generic interface provides a generic enumerator structure. 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.The IEnumerator<T> generic interface implemented by generic enumerators inherits the nongeneric IEnumerator interface; the MoveNext and Reset members, which do not depend on the type parameter T, appear only on the nongeneric interface. Di conseguenza, qualsiasi consumer dell'interfaccia non generica può usare anche l'interfaccia generica.This means that any consumer of the nongeneric interface can also consume the generic interface.

Vedere ancheSee Also

System.Collections.Generic
System.Collections.ObjectModel
GenericsGenerics
Raccolte generiche in .NET FrameworkGeneric Collections in the .NET Framework
Delegati generici per la modifica di matrici ed elenchiGeneric Delegates for Manipulating Arrays and Lists
Covarianza e controvarianzaCovariance and Contravariance