Condividi tramite


Raccolte generiche in .NET

La libreria di classi .NET fornisce una serie di 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 raccolta comunemente usati.

System.Collections.Generic

Molti dei 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 anziché DictionaryEntry.

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

Esistono versioni generiche e non generiche di SortedList<TKey,TValue>. Entrambe le versioni sono ibride di un dizionario e di un elenco. La SortedDictionary<TKey,TValue> classe generica è un dizionario puro e non ha una controparte non generica.

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

System.Collections.ObjectModel

La Collection<T> classe generica fornisce una classe di base per derivare i propri tipi di raccolta generici. La ReadOnlyCollection<T> classe fornisce un modo semplice per produrre una raccolta di sola lettura da qualsiasi tipo che implementa l'interfaccia IList<T> generica. La KeyedCollection<TKey,TItem> classe generica consente di archiviare oggetti che contengono chiavi personalizzate.

Altri tipi generici

La Nullable<T> struttura generica consente di usare i tipi valore come se fossero assegnati null. Ciò può essere utile quando si lavora con le query di database, in cui i campi che contengono tipi valore possono non essere presenti. Il parametro di tipo generico può essere qualsiasi tipo di valore.

Annotazioni

In C# e Visual Basic non è necessario usare Nullable<T> in modo esplicito perché il linguaggio ha la sintassi per i tipi nullable. Vedere Tipi di valori Nullable (riferimenti per C#) e tipi di valore Nullable (Visual Basic).See Nullable value types (C# reference) and Nullable value types (Visual Basic).

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

Il EventHandler<TEventArgs> delegato generico elimina la necessità di dichiarare un tipo 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 MyEventArgs classe, derivata da EventArgs, per contenere i dati per l'evento. È quindi possibile dichiarare l'evento nel modo seguente:

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

Vedere anche