Raccolte generiche in .NET

La libreria di classi .NET offre varie classi di raccolte generiche negli spazi dei nomi System.Collections.Generic e System.Collections.ObjectModel. Per informazioni più dettagliate su queste classi, vedere Tipi di raccolte comunemente usate.

System.Collections.Generic

Diversi tipi di raccolta generici sono analoghi diretti di tipi non generici. Dictionary<TKey,TValue> è una versione generica di Hashtable. Usa la struttura generica KeyValuePair<TKey,TValue> per l'enumerazione invece di DictionaryEntry.

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

Esistono 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 ha una controparte non generica.

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

System.Collections.ObjectModel

La classe generica Collection<T> fornisce una classe base da cui derivare i propri tipi di raccolta generici. La classe ReadOnlyCollection<T> consente di creare facilmente una raccolta di sola lettura dai tipi che implementano l'interfaccia generica IList<T>. La classe generica KeyedCollection<TKey,TItem> consente di archiviare oggetti contenenti le relative chiavi.

Altri tipi generici

La struttura generica Nullable<T> consente di usare tipi di valore come se potessero essere impostati su null. Può risultare utile quando si usano query di database, dove possono mancare campi che contengono tipi di valore. Il parametro di un tipo generico può essere qualsiasi tipo di valore.

Nota

In C# e Visual Basic non è necessario usare Nullable<T> in modo esplicito perché questo linguaggio dispone della sintassi per i tipi nullable. Vedere Tipi che ammettono i valori Null (riferimenti per C#) and Tipi che ammettono i valori Null (Visual Basic).

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

Con il delegato generico EventHandler<TEventArgs> non è più necessario dichiarare un tipo di delegato per gestire gli eventi, se l'evento segue il modello di gestione degli eventi usato da .NET. Si supponga, ad esempio, di aver creato una classe MyEventArgs, derivata da EventArgs, in cui includere i dati dell'evento. È quindi possibile dichiarare l'evento come indicato di seguito:

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

Vedi anche