Condividi tramite


Risoluzione dei problemi relativi alle variabili in Visual Basic

In questa pagina sono elencati alcuni problemi comuni che possono verificarsi durante l'utilizzo delle variabili in Visual Basic.

Impossibile accedere ai membri di un oggetto

Se il codice tenta di accedere alla proprietà o al metodo di un oggetto, possono verificarsi due diverse situazioni di errore:

  • È possibile che venga generato un messaggio di errore dal compilatore se si dichiara che la variabile dell'oggetto debba essere di un tipo specifico e si fa quindi riferimento a un membro non definito da quel tipo.

  • È possibile che in fase di esecuzione si verifichi una MemberAccessException quando il membro al quale il codice sta cercando di accedere non viene esposto dall'oggetto assegnato a una variabile oggetto.Nel caso di una variabile di Tipo di dati Object, questa eccezione può anche verificarsi se il membro non è Public.Ciò accade in quanto l'associazione tardiva consente l'accesso solo ai membri Public.

Quando con l'Istruzione Option Strict viene impostato il controllo di tipo su On, la variabile oggetto sarà in grado di accedere solo ai metodi e alle proprietà della classe con la quale lo si dichiara.Questa condizione è illustrata nell'esempio che segue.

Dim p As Object = New System.Windows.Forms.Label
Dim q As System.Windows.Forms.Label = New System.Windows.Forms.Label
Dim j, k As Integer
' The following statement generates a compiler error.
j = p.Left
' The following statement retrieves the left edge of the label 
' in pixels.
k = q.Left

In questo esempio, p può utilizzare soltanto i membri della classe Object, che non includono la proprietà Left.D'altra parte, la variabile q è stata dichiarata di tipo Label e può quindi utilizzare tutti i metodi e le proprietà della classe Label nello spazio dei nomi System.Windows.Forms.

s7fx2f23.collapse_all(it-it,VS.110).gifApproccio corretto

Per poter accedere a tutti i membri di un oggetto di una determinata classe, è necessario dichiarare, quando possibile, che la variabile oggetto sia del tipo di quella classe. Se non è possibile, ad esempio se al momento della compilazione non si conosce il tipo di oggetto, è necessario impostare Option Strict su Off e dichiarare la variabile con il Tipo di dati Object.In questo modo è possibile assegnare gli oggetti di ogni tipo alla variabile e non dovrebbe essere necessario prendere precauzioni per accertarsi che l'oggetto attualmente assegnato sia di un tipo accettabile.A tal fine, è possibile utilizzare Operatore TypeOf (Visual Basic).

Accesso alla variabile non consentito da parte di altri componenti

I nomi di Visual Basic non prevedono la distinzione tra maiuscole e minuscole.Se i due nomi differiscono solo nelle maiuscole e minuscole, il compilatore li interpreta come se fossero lo stesso nomeABC e abc, ad esempio, sono considerati come riferimenti allo stesso elemento dichiarato.

Nel Common Language Runtime, tuttavia, viene utilizzata l'associazione con distinzione tra maiuscole e minuscole.Di conseguenza, quando si genera un assembly o una DLL e li si rende disponibili per altri assembly, per i nomi utilizzati verrà fatta distinzione tra maiuscole e minuscole.Se ad esempio si definisce una classe con un elemento denominato ABC e altri assembly utilizzano tale classe tramite il Common Language Runtime, è necessario che gli assembly facciano riferimento all'elemento come ABC.Se, successivamente, la classe viene ricompilata e il nome dell'elemento viene modificato in abc, gli altri assembly che utilizzano la classe non potranno più accedere all'elemento.Di conseguenza, quando si rilascia una versione aggiornata di un assembly, è preferibile non modificare le maiuscole e le minuscole degli elementi pubblici.

Per ulteriori informazioni, vedere Common Language Runtime (CLR).

s7fx2f23.collapse_all(it-it,VS.110).gifApproccio corretto

Per consentire ad altri componenti di accedere alla variabili, considerarne i nomi come se facessero distinzione tra maiuscole e minuscole.Quando si esegue la verifica della classe o del modulo, accertarsi che gli altri assembly stiano effettuando l'associazione alle variabili previste.Dopo aver pubblicato un componente, non effettuare alcuna modifica ai nomi delle variabili esistenti, compresa la modifica delle maiuscole o minuscole.

Variabile utilizzata non corretta

Se sono presenti più variabili con lo stesso nome, il compilatore di Visual Basic tenta di risolvere ogni riferimento a tale nome.Se le variabili hanno un ambito diverso, il compilatore risolve un riferimento alla dichiarazione con l'ambito più ristretto. Se invece hanno lo stesso ambito, la risoluzione non riesce e il compilatore segnala un errore.Per ulteriori informazioni, vedere Riferimenti a elementi dichiarati (Visual Basic).

s7fx2f23.collapse_all(it-it,VS.110).gifApproccio corretto

Evitare di utilizzare variabili con lo stesso nome ma ambito diverso.Se si utilizzano altri assembly o progetti, evitare per quanto possibile di utilizzare qualsiasi nome definito in quei componenti esterni.Se esiste più di una variabile con lo stesso nome, accertarsi di qualificare ogni riferimento ad essa.Per ulteriori informazioni, vedere Riferimenti a elementi dichiarati (Visual Basic).

Vedere anche

Attività

Procedura: accedere ai membri di un oggetto (Visual Basic)

Procedura: determinare a quale tipo fa riferimento una variabile oggetto (Visual Basic)

Concetti

Variabili in Visual Basic

Dichiarazione di variabili in Visual Basic

Variabili oggetto in Visual Basic

Dichiarazione di variabili oggetto (Visual Basic)

Valori di variabili oggetto (Visual Basic)

Riferimenti a elementi dichiarati (Visual Basic)

Nomi di elementi dichiarati (Visual Basic)