Insiemi in Visual Basic
In generale, un insieme può essere definito un oggetto utilizzato per raggruppare e gestire oggetti correlati. Ogni Form ad esempio è dotato di un insieme di controlli. È possibile accedere a questo insieme tramite la proprietà Controls del form. Questo insieme è un oggetto che rappresenta tutti i controlli di quel form e consente di recuperare un controllo dell'insieme in base all'indice e di scorrere in ciclo gli elementi utilizzando un Istruzione For Each...Next (Visual Basic).
Esistono tuttavia diversi tipi di insiemi che si differenziano tra loro in vari modi.
Tipi di insiemi diversi
In Visual Basic viene inoltre fornita una classe Collection con la quale è possibile definire e creare insiemi personalizzati. Analogamente all'insieme Controls di un form, la classe Collection è dotata di una funzionalità incorporata che consente di scorrere in ciclo gli elementi utilizzando For Each...Next e di fare riferimento agli elementi in base all'indice. Per ulteriori informazioni, vedere Collection.
I due tipi di insiemi, tuttavia, non interagiscono tra loro. Il codice seguente, ad esempio, genera un errore di compilazione.
Dim localControls As Collection
' The following line generates a COMPILER ERROR.
localControls = Me.Controls()
Gli insiemi sono incompatibili in quanto l'insieme Controls è un insieme .NET Framework, mentre la variabile localControls è un Collection di Visual Basic. I due tipi di insiemi vengono implementati da classi diverse. I metodi sono simili ma non identici, mentre gli schemi di indicizzazione sono diversi.
Insiemi in base zero e in base uno
Un insieme può essere a base zero o a base uno, a seconda dell'indice iniziale. Nel primo caso l'indice del primo elemento dell'insieme sarà 0, mentre nel secondo caso sarà 1. Un esempio di insieme a base zero è .NET Framework Controls, esaminato in precedenza. L'oggetto Collection di Visual Basic è un esempio di insieme a base uno.
L'utilizzo degli insiemi a base uno può essere più intuitivo per gli utenti di Visual Basic, in quanto l'indice è compreso tra 1 e il valore della proprietà Count, che restituisce il numero di elementi in un insieme. L'indice di un insieme a base zero, invece, è compreso tra zero e uno meno il valore della proprietà Count. Può essere appropriato quando si esegue l'offset dei valori di indice da un valore base o quando questi corrispondono ai membri di un'enumerazione a base 1.
Gli insiemi .NET Framework sono a base zero ai fini della standardizzazione. La classe Collection di Visual Basic è a base uno ai fini della compatibilità con le versioni precedenti.
Valori di indice e chiave
Le istanze della classe Collection di Visual Basic consentono di accedere a un elemento tramite un indice numerico o una chiave String. È possibile aggiungere elementi agli oggetti Collection di Visual Basic specificando o meno una chiave. Se si aggiunge un elemento senza una chiave, è necessario utilizzarne l'indice numerico per averne accesso.
Gli insiemi come System.Collections.ArrayList invece consentono solo un indice numerico. Non è possibile associare le chiavi agli elementi di questi insiemi, a meno che non si costruisca una mappatura personale basata, ad esempio, su una matrice String contenente le chiavi.
Aggiunta e rimozione di elementi
Gli insiemi si differenziano tra loro anche per la possibilità di aggiungervi elementi e, ove applicabile, per la modalità di aggiunta degli elementi. Poiché l'oggetto Collection di Visual Basic è uno strumento generico di programmazione, è più flessibile di altri insiemi. Comprende un metodo Add per l'inserimento degli elementi nell'insieme e un metodo Remove per l'estrazione degli elementi.
Alcuni insiemi specializzati, invece, non consentono di aggiungere o rimuovere elementi mediante il codice. La proprietà CheckedListBox.CheckedItems ad esempio restituisce un insieme di riferimenti agli elementi in base all'indice, ma non consente al codice di aggiungere o rimuovere elementi dall'insieme. Tale operazione è consentita solo all'utente, tramite la selezione o la deselezione della casella appropriata nell'interfaccia utente. Questo insieme non dispone di un metodo Add o Remove.
Vedere anche
Attività
Procedura: creare un insieme di oggetti (Visual Basic)
Procedura: creare una matrice di oggetti (Visual Basic)
Procedura: aggiungere, eliminare e recuperare elementi di un insieme (Visual Basic)
Procedura: definire insiemi nelle classi (Visual Basic)
Procedura: scorrere un insieme in Visual Basic
Risoluzione dei problemi relativi agli insiemi (Visual Basic)
Concetti
Cenni preliminari sugli inizializzatori di insieme (Visual Basic)
Gestione di gruppi di oggetti in Visual Basic