Condividi tramite


Insiemi generici in .NET Framework

Aggiornamento: novembre 2007

In questo argomento è riportata una panoramica sulle classi di insiemi generici e su altri tipi generici in .NET Framework.

Insiemi generici in .NET Framework

Nella libreria di classi di .NET Framework viene fornito un determinato numero di classi di insiemi generici negli spazi dei nomi System.Collections.Generic e System.Collections.ObjectModel. Per ulteriori informazioni su queste classi, vedere Tipi di insieme comunemente utilizzati.

System.Collections.Generic

Molti tipi di insiemi generici sono analoghi diretti di tipi non generici. Dictionary<TKey, TValue> è una versione generica di Hashtable e utilizza la struttura generica KeyValuePair<TKey, TValue> per l'enumerazione anziché DictionaryEntry.

List<T> è una versione generica di ArrayList. Esistono classi Queue<T> e Stack<T> generiche corrispondenti alle versioni non generiche.

Sono disponibili versioni generiche e non generiche di SortedList<TKey, TValue>. Entrambe le versioni sono ibridi di un dizionario e di un elenco. La classe generica SortedDictionary<TKey, TValue> è un dizionario vero e proprio e non presenta una controparte non generica.

La classe generica LinkedList<T> è un vero elenco collegato e non ha una controparte non generica.

System.Collections.ObjectModel

La classe generica Collection<T> fornisce una classe base per la derivazione di tipi di insieme generici personalizzati. La classe ReadOnlyCollection<T> fornisce un sistema semplice per generare un insieme in sola lettura dei tipi che implementano l'interfaccia generica IList<T>. La classe generica KeyedCollection<TKey, TItem> consente di archiviare gli oggetti contenenti le rispettive chiavi.

Altri tipi generici

La struttura generica Nullable<T> consente di utilizzare i tipi di valore come se fosse possibile assegnare loro il valore null. Questa caratteristica può essere utile quando si utilizzano query di database, in cui possono mancare i campi che contengono i tipi di valore. Il parametro di tipo generico può essere un tipo di valore qualsiasi.

Nota:

In C# non è necessario utilizzare Nullable<T> in modo esplicito perché in questo linguaggio è presente una sintassi per i tipi nullable.

La struttura generica ArraySegment<T> consente di delimitare un intervallo di elementi all'interno di una matrice unidimensionale in base zero di qualsiasi tipo. Il parametro di tipo generico è il tipo degli elementi della matrice.

Il delegato generico EventHandler<TEventArgs> elimina la necessità di dichiarare un tipo delegato per la gestione degli eventi, purché l'evento sia conforme al modello di gestione degli eventi utilizzato da .NET Framework. Si supponga, ad esempio, di aver creato una classe MyEventArgs, derivata da EventArgs, per contenere i dati dell'evento. A questo punto è possibile dichiarare l'evento utilizzando il codice riportato di seguito.

Public Event MyEvent As EventHandler(Of MyEventArgs)
public event EventHandler<MyEventArgs> MyEvent;
public:
    event EventHandler<MyEventArgs^>^ MyEvent;

Vedere anche

Concetti

Cenni preliminari sui generics in .NET Framework

Delegati generici per la modifica di matrici ed elenchi

Interfacce generiche

Vantaggi e limitazioni di generics

Riferimenti

System.Collections.Generic

System.Collections.ObjectModel

Altre risorse

Generics in .NET Framework