Condividi tramite


Tipi di insieme comunemente utilizzati

Aggiornamento: novembre 2007

I tipi di insieme sono le varianti comuni degli insiemi di dati, quali tabelle hash, code, stack, 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, quali Array, ArrayList o List<T>, o direttamente sull'interfaccia ICollection, quali Queue, Stack o LinkedList<T>, ogni elemento contiene un solo valore. Negli insiemi basati sull'interfaccia IDictionary, quali le classi Hashtable e SortedList o le classi generiche Dictionary<TKey, TValue> e SortedList<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.

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.

In questa sezione

Riferimenti

Sezioni correlate

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