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 |
---|---|
Implementa l'interfaccia IList, utilizzando una matrice le cui dimensioni sono incrementate in modo dinamico in base alle esigenze. |
|
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). |
|
Rappresenta un insieme di coppie chiave/valore organizzate in base al codice hash della chiave. |
|
Rappresenta un insieme di oggetti FIFO (first-in-first-out). |
|
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 |
---|---|
Fornisce la classe di base per un insieme generico. |
|
Rappresenta un insieme di coppie chiave/valore organizzate in base alla chiave. |
|
Fornisce la classe di base astratta per un insieme le cui chiavi sono incorporate all'interno dei valori. |
|
Rappresenta una lista bidirezionale. |
|
Rappresenta un nodo in una LinkedList<T>. La classe non può essere ereditata. |
|
Implementa l'interfaccia IList<T>, utilizzando una matrice le cui dimensioni sono incrementate in modo dinamico in base alle esigenze. |
|
Rappresenta un insieme di oggetti FIFO (first-in-first-out). |
|
Rappresenta un insieme di coppie chiave/valore ordinate in base alla chiave. |
|
Rappresenta un insieme di coppie chiave/valore ordinate per chiave in base all'implementazione IComparer<T> associata. |
|
Rappresenta un insieme di istanze LIFO (last-in-first-out) a dimensione variabile dello stesso tipo arbitrario. |
|
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 |
---|---|
Crea insiemi che ignorano la differenza tra maiuscole e minuscole nelle stringhe. |
|
Implementa IDictionary utilizzando una ListDictionary quando l'insieme è di piccole dimensioni e passa a una Hashtable quando le dimensioni dell'insieme aumentano. |
|
Implementa la IDictionary utilizzando un elenco di oggetti collegato singolarmente. Consigliato per gli insiemi che non superano le 10 voci. |
|
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. |
|
Rappresenta un insieme di chiavi di stringa e valori di stringa associati a cui è possibile accedere mediante la chiave o l'indice. |
|
Rappresenta un insieme di coppie chiave/valore ordinate in base alla chiave o all'indice. |
|
Rappresenta un insieme di stringhe. |
|
Implementa una tabella hash con la chiave e il valore fortemente tipizzati per essere stringhe anziché oggetti. |
Vedere anche
Concetti
Riferimenti
Oggetto Collection (Visual Basic)