Condividi tramite


Insiemi in .NET Framework con Visual Basic

Aggiornamento: novembre 2007

In .NET Framework sono disponibili classi specializzate per la memorizzazione e il recupero di dati. Queste classi forniscono il supporto per stack, code, elenchi e tabelle hash. La maggior parte delle classi di insieme implementa le stesse interfacce. Se necessario, implementando queste interfacce è possibile creare classi di insieme personalizzate.

È sufficiente determinare il tipo di insieme più adatto alle proprie esigenze.

Differenze tra le classi di insieme di Visual Basic e .NET Framework

Le classi di insieme di .NET Framework sono definite negli spazi dei nomi System.Collections, System.Collections.Generic, System.Collections.Specialized e System.Collections.ObjectModel. Le classi di insieme di Visual Basic e .NET Framework si differenziano per le seguenti caratteristiche:

  • Base dell'indice. Gli insiemi di .NET Framework sono a base zero, mentre l'insieme di Visual Basic è a base uno. Ciò significa che gli elementi di un insieme di Visual Basic hanno valori di indice compresi tra 1 e il valore di Proprietà Count (oggetto Collection), mentre gli elementi di un insieme di .NET Framework hanno valori di indice compresi tra 0 e 1, meno il valore della proprietà Count dell'insieme.

  • Tipo di elemento. L'insieme di Visual Basic supporta elementi di tipo Object. L'insieme non è indipendente dai tipi, il che significa che è possibile aggiungere un elemento di qualsiasi tipo di dati. In genere, questa operazione induce una riduzione delle prestazioni poiché è necessario convertire gli elementi dal tipo di dati Object sul tipo vero.

    Inoltre, alcuni degli insiemi di .NET Framework hanno elementi di tipo Object, mentre altri sono fortemente tipizzati, il che significa che supportano elementi di un tipo specifico, che li rende indipendenti dai tipi e, in genere, induce prestazioni ottimali.

  • Elementi chiave. L'insieme di Visual Basic consente di specificare una chiave quando si aggiunge un elemento. La chiave è un valore di stringa univoco che è possibile utilizzare successivamente per accedere a un elemento specifico. L'insieme di .NET Framework varia rispetto alle chiavi. Alcuni supportano le chiavi mentre altri non le supportano.

Classi System.Collections

Le classi nello spazio dei nomi System.Collections non archiviano gli elementi come oggetti tipizzati in modo specifico, ma come oggetti di tipo Object.

Nella tabella riportata di seguito sono illustrate alcune delle classi frequentemente utilizzate:

Classe

Descrizione

ArrayList

Implementa l'interfaccia IList, utilizzando una matrice le cui dimensioni sono incrementate in modo dinamico in base alle esigenze.

BitArray

Gestisce una matrice compatta di valori bit, rappresentati come valori Boolean, dove True indica che il bit è attivato (1) e False indica che il bit è disattivato (0).

Hashtable

Rappresenta un insieme di coppie chiave/valore organizzate in base al codice hash della chiave.

Queue

Rappresenta un insieme di oggetti FIFO (first-in-first-out).

Stack

Rappresenta un insieme di oggetti semplice non generico LIFO (last-in-first-out).

Classi System.Collections.Generic e System.Collections.ObjectModel

Negli spazi dei nomi System.Collections.Generic e System.Collections.ObjectModel sono forniti tipi generici che consentono di creare insieme fortemente tipizzati e specificare i tipi di dati dell'elemento in fase di creazione.

Nella tabella riportata di seguito sono illustrate alcune delle classi frequentemente utilizzate:

Classe

Descrizione

Collection<T>

Fornisce la classe di base per un insieme generico.

Dictionary<TKey, TValue>

Rappresenta un insieme di coppie chiave/valore organizzate in base alla chiave.

KeyedCollection<TKey, TItem>

Fornisce la classe di base astratta per un insieme le cui chiavi sono incorporate all'interno dei valori.

LinkedList<T>

Rappresenta una lista bidirezionale.

LinkedListNode<T>

Rappresenta un nodo in una LinkedList<T>. La classe non può essere ereditata.

List<T>

Implementa l'interfaccia IList<T>, utilizzando una matrice le cui dimensioni sono incrementate in modo dinamico in base alle esigenze.

Queue<T>

Rappresenta un insieme di oggetti FIFO (first-in-first-out).

SortedDictionary<TKey, TValue>

Rappresenta un insieme di coppie chiave/valore ordinate in base alla chiave.

SortedList<TKey, TValue>

Rappresenta un insieme di coppie chiave/valore ordinate per chiave in base all'implementazione IComparer<T> associata.

Stack<T>

Rappresenta un insieme di istanze LIFO (last-in-first-out) a dimensione variabile dello stesso tipo arbitrario.

ReadOnlyCollection<T>

Fornisce la classe di base per un insieme generico in sola lettura.

Classi System.Collections.Specialized

Nello spazio dei nomi System.Collections.Specialized vengono fornite classi di insieme fortemente tipizzate e specializzate, ad esempio insiemi di sole stringhe e dizionari ibridi ed elenchi collegati.

Nella tabella riportata di seguito sono illustrate alcune delle classi frequentemente utilizzate:

Classe

Descrizione

CollectionsUtil

Crea insiemi che ignorano la differenza tra maiuscole e minuscole nelle stringhe.

HybridDictionary

Implementa IDictionary utilizzando una ListDictionary quando l'insieme è di piccole dimensioni e passa a una Hashtable quando le dimensioni dell'insieme aumentano.

ListDictionary

Implementa la IDictionary utilizzando un elenco di oggetti collegato singolarmente. Consigliato per gli insiemi che non superano le 10 voci.

NameObjectCollectionBase

Fornisce la classe di base astratta per un insieme di chiavi di stringa e valori di oggetti associati a cui è possibile accedere mediante la chiave o l'indice.

NameValueCollection

Rappresenta un insieme di chiavi di stringa e valori di stringa associati a cui è possibile accedere mediante la chiave o l'indice.

OrderedDictionary

Rappresenta un insieme di coppie chiave/valore ordinate in base alla chiave o all'indice.

StringCollection

Rappresenta un insieme di stringhe.

StringDictionary

Implementa una tabella hash con la chiave e il valore fortemente tipizzati per essere stringhe anziché oggetti.

Vedere anche

Concetti

Insiemi in Visual Basic

Riferimenti

Oggetto Collection (Visual Basic)

Altre risorse

Funzionalità avanzate di Visual Basic