Risoluzione dei problemi relativi agli insiemi (Visual Basic)
In questa pagina sono elencati alcuni problemi comuni che possono verificarsi durante l'utilizzo degli insiemi.
Uso di un tipo di insieme non corretto
Per gli sviluppatori Visual Basic sono disponibili diversi tipi di insiemi: la classe Visual Basic Collection e le classi di insiemi fornite da .NET Framework. Queste classi non sono compatibili tra loro. Ciò significa che se si dichiara una variabile di un tipo di insieme, è impossibile assegnare a questa variabile un oggetto di altro tipo. È possibile accedere solo ai metodi e alle proprietà del tipo di insieme dichiarato.
Le principali differenze tra le classi di insiemi Visual Basic e .NET Framework sono:
Base indice. Gli insiemi .NET Framework sono in base zero, mentre l'insieme Visual Basic è in base uno. Gli elementi di un insieme Visual Basic hanno quindi valori di indice compresi tra 1 e il valore della proprietà Count, mentre gli elementi di un insieme .NET Framework hanno valori di indice compresi tra 0 e il valore della proprietà Count dell'insieme meno uno.
Tipo di elemento. Nell'insieme Visual Basic sono supportati elementi di tipo Object, che non è indipendente dai tipi perché è possibile aggiungere elementi di qualsiasi tipo di dati. Ne risulta in genere una riduzione delle prestazioni perché il compilatore deve eseguire il boxing e l'unboxing degli elementi per convertirli nell'oggetto e dall'oggetto Tipo di dati Object. In alcuni insiemi .NET Framework sono contenuti elementi di tipo Object, ma molti altri sono fortemente tipizzati e quindi supportano elementi di tipo specifico, caratteristica che li rende indipendenti dai tipi e determina di norma prestazioni ottimali.
Elementi con chiave. L'insieme Visual Basic consente di specificare una chiave quando viene aggiunto un elemento. La chiave è un valore String univoco che è possibile utilizzare in seguito per accedere a uno specifico elemento. Gli insiemi .NET Framework variano riguardo alle chiavi. In alcuni le chiavi sono supportate, in altri no.
Le definizioni delle classi di insiemi sono contenute nei seguenti spazi dei nomi:
Microsoft.VisualBasic - classe Visual Basic Collection
System.Collections - classi di insiemi specifici, ad esempio elenchi, code, matrici di bit, tabelle hash, dizionari
System.Collections.Generic - classi di insiemi generici che consentono di creare insiemi fortemente tipizzati e di specificare il tipo di dati dell'elemento al momento della creazione.
System.Collections.Specialized - classi di insiemi specializzati e fortemente tipizzati, ad esempio dizionari ad elenchi collegati e ibridi, insiemi di vettori di bit e di oggetti nome, insiemi di sole stringhe
Approccio corretto
Determinare il tipo di insieme più appropriato alle esigenze. Dichiarare il tipo della variabile dell'insieme e accertarsi di aver creato un oggetto dello stesso tipo. Utilizzare il nome completo per assicurarsi di aver specificato il tipo di insieme desiderato. Nell'esempio seguente vengono illustrate due dichiarazioni con nome completo.
Dim customers As New Microsoft.VisualBasic.Collection()
Dim stringQueue As New System.Collections.Generic.Queue(Of String)
Dopo aver creato un insieme di tipo specifico, assicurarsi di utilizzare solo i metodi e le proprietà definiti su quel tipo. Impostare l'opzione Option Strict On per individuare eventuali errori di assegnazione di oggetti o di accesso ai membri in fase di compilazione.