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