Condividi tramite


Interfacce generiche in .NET

Questo articolo fornisce una panoramica delle interfacce generiche di .NET che forniscono funzionalità comuni a famiglie di tipi generici.

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. .NET 7 introduce interfacce generiche per tipi simili a numeri, ad esempio System.Numerics.INumber<TSelf>. Queste interfacce consentono di definire metodi generici che forniscono funzioni matematiche, in cui il parametro di tipo generico è vincolato a un tipo che implementa un'interfaccia generica numerica.

Nota

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. Per altre informazioni, vedere Covarianza e controvarianza.

Confronti di uguaglianza e ordinamento

Funzione di raccolta

  • L'interfaccia generica ICollection<T> è l'interfaccia di base per i tipi di raccolta 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 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ò usare anche l'interfaccia generica.

Funzione matematica

.NET 7 introduce interfacce generiche nello spazio dei nomi System.Numerics che descrivono tipi di genere numerico e le funzioni disponibili. I 20 tipi numerici forniti dalla libreria di classi di base .NET, ad esempio Int32 e Double, sono stati aggiornati per implementare queste interfacce. La più importante di queste interfacce è INumber<TSelf>, che corrisponde approssimativamente a un numero "reale".

Per altre informazioni su queste interfacce, vedere Matematica generica.

Vedi anche