Condividi tramite


Tipi di insieme comunemente utilizzati

I tipi di insieme sono le varianti comuni degli insiemi di dati, ad esempio tabelle hash, code, stack, contenitori, dizionari ed elenchi.

Gli insiemi sono basati sull'interfaccia ICollection, IList, IDictionary o sulle relative controparti generiche. Poiché le interfacce IList e IDictionary sono entrambe derivate dall'interfaccia ICollection, tutti gli insiemi si basano direttamente o indirettamente sull'interfaccia ICollection. Negli insiemi basati sull'interfaccia IList, ad esempio Array, ArrayList o List<T> oppure direttamente sull'interfaccia ICollection, ad esempio Queue, ConcurrentQueue<T>, Stack, ConcurrentStack<T> o LinkedList<T>, ogni elemento contiene un solo valore. Negli insiemi basati sull'interfaccia IDictionary, quali le classi Hashtable e SortedList e le classi generiche Dictionary<TKey, TValue> e SortedList<TKey, TValue> o sulle classi ConcurrentDictionary<TKey, TValue>, ogni elemento contiene sia una chiave che un valore. La classe KeyedCollection<TKey, TItem> rappresenta un caso particolare poiché è costituita da un elenco di valori nei quali sono incorporate le chiavi. Si comporta quindi sia come un elenco che come un dizionario.

Gli insiemi generici rappresentano la migliore soluzione per la tipizzazione forte. Se tuttavia il linguaggio non supporta i generics, lo spazio dei nomi System.Collections include insiemi di base, quali CollectionBase, ReadOnlyCollectionBase e DictionaryBase, che sono classi base astratte che è possibile estendere per creare classi di insiemi fortemente tipizzate. Quando è richiesto un accesso agli insiemi con multithreading efficiente, utilizzare gli insiemi generici nello spazio dei nomi System.Collections.Concurrent.

Gli insiemi possono variare in base all'archiviazione degli elementi, del loro ordinamento, delle modalità di ricerca e di confronto. La classe Queue e la classe generica Queue<T> forniscono elenchi FIFO (First-In-First-Out), mentre la classe Stack e la classe generica Stack<T> forniscono elenchi LIFO (Last-In-First-Out). La classe SortedList e la classe generica SortedList<TKey, TValue> forniscono versioni ordinate della classe Hashtable e della classe generica Dictionary<TKey, TValue>. Gli elementi di Hashtable o Dictionary<TKey, TValue> sono accessibili solo tramite la relativa chiave, mentre gli elementi di SortedList o KeyedCollection<TKey, TItem> sono accessibili sia tramite la chiave sia tramite l'indice. Gli indici inclusi in tutti gli insiemi sono in base zero, tranne Array, che consente matrici non in base zero.

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 e Parallel LINQ (PLINQ).

Argomenti correlati

Titolo

Descrizione

Tipo di insieme Array

Vengono descritte le funzionalità delle matrici che ne consentono la gestione come insiemi.

Tipi di insieme ArrayList e List

Vengono descritte le funzionalità degli elenchi generici e non generici, ovvero i tipi di insieme più comuni.

Tipi di insieme Hashtable e Dictionary

Vengono descritte le funzionalità dei tipi di dizionario basati su hash generici e non generici.

Tipi di insieme ordinati

Vengono descritte le classi che forniscono la funzionalità di ordinamento per elenchi e set.

Tipi di insieme Queue

Vengono descritte le funzionalità delle code generiche e non generiche.

Tipi di insieme Stack

Vengono descritte le funzionalità degli stack generici e non generici.

Tipo di raccolta HashSet

Viene descritto il tipo di raccolta generica System.Collections.Generic.HashSet<T>.

Operazioni HashSet e sui set LINQ

Vengono descritte le operazioni sui set fornite dal tipo di insieme System.Collections.Generic.HashSet<T> nonché le operazioni sui set di LINQ.

Insiemi e strutture di dati

Vengono descritti i diversi tipi di insieme disponibili in .NET Framework, tra cui stack, code, elenchi, matrici e strutture.

Generics in .NET Framework

Viene descritta la funzionalità generics, che include interfacce, delegati e insiemi generici forniti da .NET Framework. Vengono inoltre forniti collegamenti alla documentazione relativa a questa funzionalità per i linguaggi C#, Visual Basic e Visual C++ e a tecnologie di supporto come Reflection.

Riferimenti

System.Collections

System.Collections.Generic

System.Collections.ICollection

System.Collections.Generic.ICollection<T>

System.Collections.IList

System.Collections.Generic.IList<T>

System.Collections.IDictionary

System.Collections.Generic.IDictionary<TKey, TValue>