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 |
---|---|
Vengono descritte le funzionalità delle matrici che ne consentono la gestione come insiemi. |
|
Vengono descritte le funzionalità degli elenchi generici e non generici, ovvero i tipi di insieme più comuni. |
|
Vengono descritte le funzionalità dei tipi di dizionario basati su hash generici e non generici. |
|
Vengono descritte le classi che forniscono la funzionalità di ordinamento per elenchi e set. |
|
Vengono descritte le funzionalità delle code generiche e non generiche. |
|
Vengono descritte le funzionalità degli stack generici e non generici. |
|
Viene descritto il tipo di raccolta generica System.Collections.Generic.HashSet<T>. |
|
Vengono descritte le operazioni sui set fornite dal tipo di insieme System.Collections.Generic.HashSet<T> nonché le operazioni sui set di LINQ. |
|
Vengono descritti i diversi tipi di insieme disponibili in .NET Framework, tra cui stack, code, elenchi, matrici e strutture. |
|
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.ICollection
System.Collections.Generic.ICollection<T>
System.Collections.Generic.IList<T>