Condividi tramite


Interfacce generiche in .NET

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

Le interfacce generiche forniscono controparti sicure per i tipi alle interfacce non generiche per l'ordinamento e i confronti di uguaglianza, nonché per le funzionalità condivise dai tipi di raccolta generici. .NET 7 introduce interfacce generiche per tipi simili a numeri, System.Numerics.INumber<TSelf>ad esempio . Queste interfacce consentono di definire metodi generici che forniscono funzionalità matematiche, in cui il parametro di tipo generico è vincolato a un tipo che implementa un'interfaccia generica numerica.

Annotazioni

I parametri di tipo di diverse interfacce generiche sono contrassegnati come covarianti o controvarianti, offrendo maggiore flessibilità nell'assegnazione e nell'uso di tipi che implementano queste interfacce. Per altre informazioni, vedere Covarianza e Controvarianza.

Confronti di uguaglianza e ordine

Funzionalità di raccolta

  • L'interfaccia ICollection<T> generica è l'interfaccia di base per i tipi di raccolta generici. Offre funzionalità di base per l'aggiunta, la rimozione, la copia e l'enumerazione di elementi. ICollection<T> eredita sia da generico IEnumerable<T> che da non generico IEnumerable.

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

  • L'interfaccia IDictionary<TKey,TValue> generica estende l'interfaccia ICollection<T> generica con i metodi per il recupero con chiave. I tipi di dizionario generici nella libreria di classi di base .NET implementano anche l'interfaccia non generica IDictionary .

  • L'interfaccia IEnumerable<T> generica fornisce una struttura di enumeratore generica. L'interfaccia generica implementata dagli enumeratori generici eredita l'interfaccia non generica IEnumerator<T>. I membri IEnumerator e MoveNext, che non dipendono dal parametro di tipo Reset, appaiono solo sull'interfaccia non generica. Ciò significa che qualsiasi utente dell'interfaccia non generica può utilizzare anche l'interfaccia generica.

Funzionalità matematiche

.NET 7 introduce interfacce generiche nello spazio dei nomi System.Numerics che descrivono tipi simili a numeri e le funzionalità 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. Il più importante di queste interfacce è INumber<TSelf>, che corrisponde approssimativamente a un numero "reale".

Per altre informazioni su queste interfacce, vedere Matematica generica.

Vedere anche