Condividi tramite


Quando utilizzare insiemi generici

Aggiornamento: novembre 2007

L'utilizzo di insiemi generici è in genere consigliato poiché offre l'immediato vantaggio dell'indipendenza dai tipi, senza la necessità di derivare da un tipo di insieme base e implementare membri specifici di tipo. I tipi di insiemi generici offrono inoltre prestazioni migliori dei tipi non generici corrispondenti (e dei tipi derivati dai tipi di insiemi base non generici) quando gli elementi di un insieme sono tipi di valore, poiché i generics non richiedono il boxing degli elementi.

I tipi generici riportati di seguito corrispondono a tipi di insiemi esistenti:

Tipi aggiuntivi

Esistono diversi tipi di insiemi generici per i quali non esistono tipi non generici corrispondenti:

LINQ to Objects

La funzionalità LINQ to Objects consente di utilizzare le query LINQ per accedere agli oggetti in memoria purché il tipo dell'oggetto implementi IEnumerable o IEnumerable<T>. Le query LINQ forniscono un modello comune per l'accesso ai dati, sono in genere più concise e leggibili dei cicli standard foreach e forniscono funzioni di filtro, ordinamento e raggruppamento. Le query LINQ possono inoltre migliorare le prestazioni. Per ulteriori informazioni, vedere LINQ to Objects.

Funzionalità aggiuntive

Alcuni tipi generici dispongono di funzionalità che non sono presenti nei tipi di insiemi non generici. La classe List<T>, ad esempio, che corrisponde alla classe ArrayList non generica, dispone di un certo numero di metodi che accettano delegati generici, ad esempio il delegato Predicate<T>, che consente di specificare metodi per la ricerca nell'elenco, il delegato Action<T>, che rappresenta i metodi applicabili a ciascun elemento dell'elenco, e il delegato Converter<TInput, TOutput>, che consente di definire le conversioni tra tipi.

La classe List<T> consente di specificare implementazioni di interfacce generiche IComparer<T> personalizzate per l'ordinamento e la ricerca nell'elenco. Anche le classi SortedDictionary<TKey, TValue> e SortedList<TKey, TValue> offrono questa funzionalità e consentono inoltre di specificare gli operatori di confronto al momento della creazione dell'insieme. Analogamente, le classi Dictionary<TKey, TValue> e KeyedCollection<TKey, TItem> consentono di specificare operatori di uguaglianza personalizzati.

Vedere anche

Concetti

Cenni preliminari sui generics in .NET Framework

Altre risorse

Tipi di insieme comunemente utilizzati