Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
I tipi di raccolta rappresentano diversi modi per raccogliere dati, ad esempio tabelle hash, code, stack, sacche, dizionari ed elenchi.
Tutte le raccolte sono basate sull'interfaccia ICollection o ICollection<T>, direttamente o indirettamente. IList e IDictionary le rispettive controparti generiche derivano tutte da queste due interfacce.
Nelle raccolte basate su IList o direttamente su ICollection, ogni elemento contiene solo un valore. Questi tipi includono:
Nelle raccolte basate sull'interfaccia IDictionary ogni elemento contiene sia una chiave che un valore. Questi tipi includono:
- Hashtable
- SortedList
- SortedList<TKey,TValue>
- Dictionary<TKey,TValue>
- ConcurrentDictionary<TKey,TValue>
La KeyedCollection<TKey,TItem> classe è univoca perché è un elenco di valori con chiavi incorporate all'interno dei valori. Di conseguenza, si comporta sia come un elenco che come un dizionario.
Quando hai bisogno di un accesso efficiente alle raccolte multithreaded, utilizza le raccolte generiche nello spazio dei nomi System.Collections.Concurrent.
Le classi Queue e Queue<T> forniscono elenchi "first-in-first-out". La classe Stack e Stack<T> forniscono elenchi ultimo ad entrare, primo ad uscire.
Tipizzazione forte
Le raccolte generiche sono la soluzione migliore per la digitazione avanzata. Ad esempio, aggiungere un elemento di un tipo qualsiasi diverso da Int32 a una raccolta List<Int32>
provoca un errore in fase di compilazione. Tuttavia, se il linguaggio non supporta generics, lo System.Collections spazio dei nomi include classi base astratte che è possibile estendere per creare classi di raccolta fortemente tipizzate. Queste classi di base includono:
Variazione delle raccolte
Le raccolte variano in base alla modalità di archiviazione, ordinamento e confronto degli elementi e alla modalità di esecuzione delle ricerche.
La SortedList classe e la SortedList<TKey,TValue> classe generica forniscono versioni ordinate della Hashtable classe e della Dictionary<TKey,TValue> classe generica.
Tutte le raccolte usano indici in base zero, ad eccezione Arraydi , che consente matrici non basate su zero.
È possibile accedere agli elementi di un SortedList o di un KeyedCollection<TKey,TItem> tramite la chiave o l'indice dell'elemento. Puoi accedere agli elementi di un oggetto Hashtable o Dictionary<TKey,TValue> solo mediante la chiave dell’elemento.
Usare LINQ con tipi di raccolta
La funzionalità LINQ to Objects fornisce un modello comune per l'accesso a oggetti in memoria di qualsiasi tipo che implementa IEnumerable o IEnumerable<T>. Le query LINQ offrono diversi vantaggi rispetto ai costrutti standard come i cicli foreach
.
- Sono concisi e più facili da comprendere.
- Possono filtrare, ordinare e raggruppare i dati.
- Possono migliorare le prestazioni.
Per altre informazioni, vedere LINQ to Objects (C#),LINQ to Objects (Visual Basic) e PARALLEL LINQ (PLINQ).
Argomenti correlati
Titolo | Descrizione |
---|---|
Raccolte e strutture di dati | Vengono illustrati i vari tipi di raccolta disponibili in .NET, inclusi stack, code, elenchi, matrici e dizionari. |
Tipi di raccolta Hashtable e Dictionary | Vengono descritte le funzionalità dei tipi di dizionario generici e non generici basati su hash. |
Tipi di raccolta ordinati | Vengono descritte le classi che forniscono funzionalità di ordinamento per elenchi e set. |
Generics | Descrive la funzionalità generics, incluse le raccolte generiche, i delegati e le interfacce fornite da .NET. Fornisce collegamenti alla documentazione delle funzionalità per C#, Visual Basic e Visual C++ e alle tecnologie di supporto, ad esempio la reflection. |
Riferimenti
System.Collections.ICollection
System.Collections.Generic.ICollection<T>
System.Collections.Generic.IList<T>