Tipi di raccolte comunemente usate

I tipi di raccolta rappresentano diversi modi per raccogliere dati, ad esempio tabelle hash, code, stack, contenitori, dizionari ed elenchi.

Tutte le raccolte sono basate sulle ICollection interfacce o ICollection<T> , direttamente o indirettamente. IList e IDictionary le relative controparti generiche derivano tutte da queste due interfacce.

Nelle raccolte basate su IList o direttamente su ICollection, ogni elemento contiene solo un valore. I tipi includono:

Nelle raccolte basate sull'interfaccia IDictionary ogni elemento contiene sia una chiave che un valore. I tipi includono:

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 è necessario un accesso efficiente alla raccolta multithreading, usare le raccolte generiche nello System.Collections.Concurrent spazio dei nomi .

Le Queue classi e Queue<T> forniscono elenchi first-in-first-out. Le Stack classi e Stack<T> forniscono elenchi last-in-first-out.

Tipizzazione forte

Le raccolte generiche rappresentano la migliore soluzione per la tipizzazione forte. Ad esempio, l'aggiunta di un elemento di qualsiasi tipo diverso da un Int32 oggetto a una List<Int32> raccolta causa un errore in fase di compilazione. Tuttavia, se il linguaggio non supporta i 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 classe SortedList e la classe generica SortedList<TKey,TValue> rappresentano versioni ordinate della classe Hashtable e della classe generica Dictionary<TKey,TValue>.

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 oggetto o tramite KeyedCollection<TKey,TItem> la chiave o l'indice dell'elemento. È possibile accedere solo agli elementi di un Hashtable oggetto o tramite Dictionary<TKey,TValue> 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 presentano diversi vantaggi rispetto ai costrutti standard, ad foreach esempio cicli:

  • 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).

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 Collection Hashtable e Dictionary Vengono descritte le funzionalità dei tipi di dizionario basati su hash generici e non generici.
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. Vengono forniti collegamenti alla documentazione sulle funzionalità per i linguaggi C#, Visual Basic e Visual C++ e a tecnologie di supporto come reflection.

Riferimento

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>