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
Vantaggi e limitazioni di generics
Riferimenti
System.Collections.ObjectModel