Condividi tramite


Dichiarazione implicita ed esplicita

Aggiornamento: novembre 2007

Per impostazione predefinita, il compilatore Visual Basic impone la dichiarazione esplicita che richiede la dichiarazione di ogni variabile prima del relativo utilizzo. È possibile annullare questo requisito e consentire la dichiarazione implicita.

In Visual Basic è disponibile un'opzione che controlla la dichiarazione esplicita. Per impostazione predefinita, questa opzione è impostata su On e il compilatore impone la dichiarazione esplicita. Se si attiva l'opzione impostandola su Off, è possibile utilizzare le variabili senza dichiararle.

Opzione di dichiarazione esplicita. È possibile impostare l'opzione di dichiarazione esplicita su On o Off in uno dei seguenti modi:

  • Impostare la proprietà del progetto appropriata nell'ambiente di sviluppo integrato (IDE). Scegliere Proprietà <NomeProgetto> dal menu Progetto, quindi selezionare la scheda Compilazione. È possibile impostare i valori predefiniti per le istruzioni Option explicit, Option strict e Option compare.

  • Specificare l'opzione del compilatore della riga di comando /optionexplicit.

  • Includere l'Istruzione Option Explicit (Visual Basic) all'inizio del codice.

Se si utilizza l'istruzione OptionExplicit, tale impostazione eseguirà l'override delle impostazioni sia delle proprietà del progetto che delle opzioni di compilazione, ma solo per il file di codice sorgente in cui è presente.

Vantaggi in termini di prestazioni. L'impostazione di OptionExplicit su On presenta il vantaggio di imporre l'esecuzione dell'inferenza dei tipi in fase di compilazione anziché in fase di esecuzione. determinando un miglioramento delle prestazioni.

Dichiarazione implicita

Se si imposta OptionExplicit su Off, è possibile dichiarare in modo implicito una variabile semplicemente utilizzandola nel codice. Il compilatore assegna il Tipo di dati Object a tutte le variabili dichiarate in modo implicito. L'applicazione sarà tuttavia più efficiente se tutte le variabili vengono dichiarate in modo esplicito e con un tipo di dati specifico. Questo riduce l'incidenza di errori derivanti da conflitti di nome ed errori di digitazione. Consente inoltre al compilatore di rilevare potenziali errori di runtime, quale l'assegnazione di un tipo Integer a uno Short.

Errori potenziali

Nuove variabili non intenzionali

È possibile scrivere una routine in cui non si dichiara una variabile locale. Questa condizione è illustrata nell'esempio che segue.

Function safeSqrt(num)
' Make sure num is positive for square root.
    tempVal = Math.Abs(num)
    Return Math.Sqrt(tempVal)
End Function

In Visual Basic viene automaticamente creata tempVal come variabile locale, utilizzabile come se fosse stata dichiarata in modo esplicito. Sebbene tale operazione possa risultare comoda, è possibile che si verifichino nel codice errori difficili da individuare e da risolvere se si digita un nome di variabile in modo errato. Si supponga di aver scritto la routine riportata nell'esempio precedente nel modo descritto di seguito:

Function safeSqrt(num)
' Make sure num is positive for square root.
    tempVal = Math.Abs(num)
    Return Math.Sqrt(temVal)
End Function

A prima vista, questo codice sembra identico a quello precedente. Poiché però la variabile tempVal presenta un errore di digitazione in corrispondenza dell'argomento Sqrt, il compilatore crea un'altra variabile locale denominatatemVal, cui non viene mai assegnato alcun valore, e la funzione restituirà sempre zero.

Riferimento non intenzionale a un elemento esistente

Quando viene rilevato un nuovo nome in Visual Basic, non è possibile determinare se si intendeva dichiarare una nuova variabile in modo implicito o se il nome di una variabile esistente è stato digitato in modo errato. Pertanto viene effettuato il tentativo di creare una nuova variabile con tale nome. È possibile che una variabile o un altro elemento di programmazione sia già definito con questo nome e pertanto tale definizione verrebbe utilizzata nel codice in modo non intenzionale.

È possibile evitare problemi di errata digitazione delle variabili utilizzando la dichiarazione esplicita.

Dichiarazione esplicita

Se per il file di origine contenente la routine safeSqrt fosse stata attivata la dichiarazione esplicita nell'esempio precedente, Visual Basic avrebbe riconosciuto tempVal e temVal come variabili non dichiarate e avrebbe generato errori per entrambe. Di conseguenza, sarebbe stato necessario dichiarare tempVal in modo esplicito. Questa condizione è illustrata nell'esempio che segue.

Function safeSqrt(ByVal num As Double) As Double
' Make sure num is positive for square root.
    Dim tempVal As Double = Math.Abs(num)
    Return Math.Sqrt(temVal)
End Function

Con questo codice modificato il problema sarebbe stato rilevato immediatamente perché Visual Basic avrebbe visualizzato un messaggio di errore per la variabile temVal digitata in modo errato. Poiché la dichiarazione esplicita aiuta a rilevare questo tipo di errori, si consiglia di utilizzarla in tutto il codice.

Nota:

L'istruzione OptionExplicit opera per singoli file. È pertanto necessario inserirla all'inizio di ogni file di codice sorgente in cui si desidera controllare l'applicazione della dichiarazione esplicita delle variabili.

Vedere anche

Attività

Procedura: modificare le proprietà e le impostazioni di configurazione dei progetti

Concetti

Programmazione senza tipi in Visual Basic

Controllo dei tipi in Visual Basic

Object come tipo di dati universale

Utilizzo efficiente dei tipi di dati

Variabili in Visual Basic

Convenzioni di denominazione di Visual Basic

Riferimenti

Riepilogo dei tipi di dati (Visual Basic)

Funzioni di conversione del tipo