Istruzioni in Visual Basic

Le istruzioni in Visual Basic sono istruzioni complete che possono contenere parole chiave, operatori, variabili, costanti ed espressioni. Ogni istruzione appartiene a una delle categorie seguenti:

  • Istruzioni di dichiarazione, che consentono di assegnare un nome a variabili, costanti o routine e possono specificare anche un tipo di dati.

  • Istruzioni eseguibili, che consentono di avviare azioni e di chiamare un metodo o una funzione, scorrere in ciclo blocchi di codice o creare rami tra di essi. Sono istruzioni eseguibili anche le Istruzioni di assegnazione, che consentono di assegnare un valore o un'espressione a una variabile o costante.

In questo argomento viene descritta ogni categoria. Viene inoltre descritto come combinare più istruzioni su una singola riga e come continuare un'istruzione su più righe.

Istruzioni di dichiarazione

Le istruzioni di dichiarazione consentono di denominare e definire routine, variabili, proprietà, matrici e costanti. Quando si dichiara un elemento di programmazione, è anche possibile definirne il tipo di dati, il livello di accesso e l'ambito. Per ulteriori informazioni, vedere Caratteristiche di elementi dichiarati (Visual Basic).

L'esempio seguente contiene tre dichiarazioni.

Public Sub applyFormat()
    Const limit As Integer = 33
    Dim thisWidget As New widget
    ' Insert code to implement the procedure.
End Sub

La prima dichiarazione è l'istruzione Sub. Insieme alla sua istruzione corrispondente End Sub, dichiara una routine denominata applyFormat. Essa specifica inoltre che la routine applyFormat è di tipo Public e di conseguenza qualsiasi codice possa farvi riferimento può chiamarla.

La seconda dichiarazione è l'istruzione Const che dichiara la costante limit, specificando il tipo di dati Integer e un valore pari a 33.

La terza dichiarazione è l'istruzione Dim che dichiara la variabile thisWidget. Il tipo di dati è un oggetto specifico, in particolare un oggetto creato dalla classe Widget. È possibile dichiarare come variabile qualsiasi tipo di dati elementari o qualsiasi tipo di oggetto esposto nell'applicazione in uso.

Valori iniziali

Quando viene eseguito il codice che contiene un'istruzione di dichiarazione, Visual Basic riserva la memoria necessaria per l'elemento dichiarato. Se l'elemento contiene un valore, viene inizializzato da Visual Basic in base al valore predefinito per il relativo tipo di dati. Per ulteriori informazioni, vedere la sezione "Comportamento" in Istruzione Dim (Visual Basic).

È possibile assegnare un valore iniziale a una variabile come parte della sua dichiarazione, come illustrato nell'esempio seguente.

Dim m As Integer = 45
' The preceding declaration creates m and assigns the value 45 to it.

Se la variabile è una variabile oggetto, è possibile creare in modo esplicito un'istanza della classe di appartenenza durante la dichiarazione utilizzando la parola chiave Operatore New (Visual Basic), come illustrato di seguito:

Dim f As New System.Windows.Forms.Form()

Tenere presente che il valore iniziale specificato in un'istruzione di dichiarazione non viene assegnato alla variabile finché l'esecuzione non raggiunge la relativa istruzione di dichiarazione. Fino ad allora, la variabile contiene il valore predefinito per il suo tipo di dati.

Istruzioni eseguibili

Un'istruzione eseguibile esegue un'azione. Può chiamare una procedura, creare un ramo in un altro punto del codice, far scorrere in ciclo diverse istruzioni o valutare un'espressione. Un'istruzione di assegnazione è un caso speciale di un'istruzione eseguibile.

L'esempio illustrato di seguito utilizza una If...Then...Else struttura di controllo per eseguire blocchi di codice diversi basati sul valore di una variabile. Dentro ogni blocco di codice, un ciclo For...Next viene eseguito un numero di volte specificato.

Public Sub startWidget(ByVal aWidget As widget,
    ByVal clockwise As Boolean, ByVal revolutions As Integer)
    Dim counter As Integer
    If clockwise = True Then
        For counter = 1 To revolutions
            aWidget.spinClockwise()
        Next counter
    Else
        For counter = 1 To revolutions
            aWidget.spinCounterClockwise()
        Next counter
    End If
End Sub

L'istruzione If nell'esempio precedente verifica il valore del parametro clockwise. Se il valore è True, chiama il metodo spinClockwise di aWidget. Se il valore è False, chiama il metodo spinCounterClockwise di aWidget. La struttura di controllo If...Then...Else termina con End If.

Il ciclo For...Next dentro ogni blocco chiama il metodo appropriato un numero di volte uguale al valore del parametro revolutions.

Istruzioni di assegnazione

Le istruzioni di assegnazione consentono di eseguire operazioni di assegnazione, ovvero di ottenere il valore alla destra dell'operatore di assegnazione (=) e di archiviarlo nell'elemento a sinistra, come illustrato nell'esempio seguente.

v = 42

Nel precedente esempio l'istruzione di assegnazione viene utilizzata per archiviare il valore letterale 42 nella variabile v.

Elementi di programmazione idonei

L'elemento di programmazione a sinistra dell'operatore di assegnazione deve essere in grado di accettare e archiviare un valore, vale a dire una variabile o proprietà non ReadOnly (Visual Basic) o un elemento di matrice. Nel contesto di un'istruzione di assegnazione questo elemento viene a volte definito lvalue che sta per "valore sinistro".

Il valore a destra dell'operatore di assegnazione viene generato da un'espressione che può essere costituita da una combinazione qualsiasi di valori letterali, costanti, variabili, proprietà, elementi matrice, altre espressioni o chiamate di funzione. Questa condizione è illustrata nell'esempio che segue.

x = y + z + findResult(3)

Nell'esempio precedente viene aggiunto il valore contenuto nella variabile y al valore incluso nella variabile z, quindi viene aggiunto il valore restituito dalla chiamata alla funzione findResult. Il valore totale dell'espressione viene quindi archiviato nella variabile x.

Tipi di dati nelle istruzioni di assegnazione

Oltre ai valori numerici, l'operatore di assegnazione può assegnare i valori String come illustrato nell'esempio seguente.

Dim a, b As String
a = "String variable assignment"
b = "Con" & "cat" & "enation"
' The preceding statement assigns the value "Concatenation" to b.

È anche possibile assegnare i valori Boolean mediante un valore letterale Boolean o un'espressione Boolean come illustrato nell'esempio seguente.

Dim r, s, t As Boolean
r = True
s = 45 > 1003
t = 45 > 1003 Or 45 > 17
' The preceding statements assign False to s and True to t.

In modo simile, è possibile assegnare i valori appropriati agli elementi di programmazione del tipo di dati Char, Date oppure Object. È infine possibile assegnare un'istanza oggetto a un elemento dichiarato come classe da cui viene creata l'istanza.

Istruzioni di assegnazione composta

Le istruzioni di assegnazione composta consentono di eseguire un'operazione su un'espressione prima che questa venga assegnata all'elemento di programmazione. Nell'esempio seguente viene illustrato uno di questi operatori, +=, con il quale il valore della variabile alla sinistra dell'operatore viene incrementato del valore restituito dall'espressione alla destra:

n += 1

Nell'esempio precedente viene aggiunto 1 al valore di n, quindi il nuovo valore viene archiviato in n. È un'abbreviazione equivalente alla seguente istruzione:

n = n + 1

Gli operatori di questo tipo consentono di eseguire una serie di operazioni di assegnazione composte. Per un elenco completo e ulteriori informazioni su questi operatori, vedere Operatori di assegnazione (Visual Basic).

Infine, l'operatore di assegnazione di concatenazione (&=) è utile per aggiungere una stringa alla fine di stringhe già esistenti, come illustrato nell'esempio seguente:

Dim q As String = "Sample "
q &= "String"
' q now contains "Sample String".

Conversioni di tipi nelle istruzioni di assegnazione

A una variabile, proprietà o un elemento matrice è necessario assegnare un valore di un tipo di dati appropriato all'elemento di destinazione. Generalmente è opportuno provare a generare un valore dello stesso tipo di dati di quello dell'elemento di destinazione. Tuttavia, durante l'assegnazione, è possibile convertire alcuni tipi in altri tipi.

Per informazioni sulla conversione tra tipi di dati, vedere Conversioni di tipi in Visual Basic. In breve, in Visual Basic un valore di un determinato tipo viene automaticamente convertito in un altro in cui può ampliarsi. Una conversione versione un tipo di dati più grande si verifica sempre in fase di esecuzione e non comporta la perdita di dati. In Visual Basic un valore Integer viene ad esempio convertito in Double quando appropriato, in quanto Integer può ampliarsi nel tipo Double. Per ulteriori informazioni, vedere Conversioni di ampliamento e restrizione (Visual Basic).

Le conversioni verso un tipo di dati più piccolo comportano rischi di errori in fase di esecuzione oppure di perdita di dati. Pe eseguire una conversione verso un tipo di dati più piccolo in modo esplicito, è possibile utilizzare una funzione di conversione di tipo, oppure è possibile indicare al compilatore di eseguire tutte le conversioni in modo implicito impostando Option Strict Off. Per ulteriori informazioni, vedere Conversioni implicite ed esplicite (Visual Basic).

Inserimento di più istruzioni su una riga

È possibile inserire sulla stessa riga più istruzioni, separate dal carattere due punti (:):. Questa condizione è illustrata nell'esempio che segue.

Dim sampleString As String = "Hello World" : MsgBox(sampleString)

Sebbene in alcune occasioni questa forma di sintassi possa risultare comoda, rende il codice difficile da leggere e gestire. Si raccomanda pertanto di mantenere una sola istruzione per riga.

Continuazione di un'istruzione su più righe

Un'istruzione generalmente rientra in una sola riga, ma in caso contrario è possibile continuarla sulla riga successiva utilizzando una sequenza di continuazione della riga, costituita da uno spazio seguito da un carattere di sottolineatura (_) a sua volta seguito da un ritorno a capo. Nell'esempio seguente, l'istruzione eseguibile MsgBox continua su due righe.

Public Sub demoBox()
    Dim nameVar As String
    nameVar = "John"
    MsgBox("Hello " & nameVar _
        & ". How are you?")
End Sub

Continuazione di riga implicita

In molti casi è possibile continuare un'istruzione sulla riga consecutiva successiva senza utilizzare il carattere di sottolineatura (_). Nella tabella seguente vengono elencati gli elementi della sintassi che consentono di continuare in modo implicito l'istruzione sulla riga di codice successiva.

Elemento della sintassi

Esempio

Dopo una virgola (,).

Dopo una parentesi aperta (() o prima di una parentesi chiusa ()).

Dopo una parentesi graffa aperta ({) o prima di una parentesi graffa chiusa (}).

Per ulteriori informazioni, vedere Inizializzatori di oggetto: tipi denominati e tipi anonimi (Visual Basic) o Cenni preliminari sugli inizializzatori di insieme (Visual Basic).

Dopo un'espressione incorporata aperta (<%=) o prima della chiusura di un'espressione incorporata (%>) all'interno di un valore letterale XML.

Per ulteriori informazioni, vedere Espressioni incorporate in XML (Visual Basic).

Dopo l'operatore di concatenazione (&).

Per ulteriori informazioni, vedere Elenco degli operatori per funzionalità (Visual Basic).

Dopo gli operatori di assegnazione (=, &=, :=, +=, -=, *=, /=, \=, ^=, <<=, >>=).

Per ulteriori informazioni, vedere Elenco degli operatori per funzionalità (Visual Basic).

Dopo gli operatori binari (+, -, /, *, Mod, <>, <, >, <=, >=, ^, >>, <<, And, AndAlso, Or, OrElse, Like, Xor) all'interno di un'espressione.

Per ulteriori informazioni, vedere Elenco degli operatori per funzionalità (Visual Basic).

Dopo gli operatori Is e IsNot.

Per ulteriori informazioni, vedere Elenco degli operatori per funzionalità (Visual Basic).

Dopo un carattere qualificatore di membro (.) e prima del nome del membro. È tuttavia necessario includere un carattere di continuazione di riga (_) dopo un carattere qualificatore di membro quando si utilizza l'istruzione With o si forniscono valori nell'elenco di inizializzazione per un tipo. Prendere in considerazione l'interruzione della riga dopo l'operatore di assegnazione (ad esempio, =) quando si utilizzano istruzioni With o elenchi di inizializzazione degli oggetti.

Per ulteriori informazioni, vedere Istruzione With...End With (Visual Basic) o Inizializzatori di oggetto: tipi denominati e tipi anonimi (Visual Basic).

Dopo un qualificatore della proprietà axis XML (. o .@ o ...). È tuttavia necessario includere un carattere di continuazione di riga (_) quando si specifica un qualificatore di membro se si utilizza la parola chiave With.

Per ulteriori informazioni, vedere Proprietà Axis XML (Visual Basic).

Dopo un segno di minore (<) o prima di un segno di maggiore (>) quando si specifica un attributo. Anche dopo un segno di maggiore (>) quando si specifica un attributo. È tuttavia necessario includere un carattere di continuazione di riga (_) quando si specificano attributi a livello di assembly o di modulo.

Per ulteriori informazioni, vedere Attributi (C# e Visual Basic).

Prima e dopo gli operatori di query (Aggregate, Distinct, From, Group By, Group Join, Join, Let, Order By, Select, Skip, Skip While, Take, Take While, Where, In, Into, On, Ascending e Descending). Non è possibile interrompere una riga tra le parole chiave degli operatori di query costituiti da più parole chiave (Order By, Group Join, Take While e Skip While).

Per ulteriori informazioni, vedere Query (Visual Basic).

Dopo la parola chiave In in un'istruzione For Each.

Per ulteriori informazioni, vedere Istruzione For Each...Next (Visual Basic).

Dopo la parola chiave From in un inizializzatore di insieme.

Per ulteriori informazioni, vedere Cenni preliminari sugli inizializzatori di insieme (Visual Basic).

Aggiunta di commenti

Il codice sorgente non sempre è di facile interpretazione, persino per il programmatore che lo ha scritto. Per aiutare a documentare il codice, pertanto, molti programmatori utilizzano deliberatamente commenti incorporati. I commenti incorporati nel codice possono illustrare una routine o una particolare istruzione agli utenti. In Visual Basic i commenti vengono ignorati durante la compilazione e non influiscono sul codice compilato.

Le righe relative ai commenti iniziano con un apostrofo (') o un'istruzione REM seguita da uno spazio. È possibile aggiungere i commenti nella posizione desiderata all'interno del codice, eccetto che in una stringa. Per aggiungere un commento a un'istruzione, inserire un apostrofo o REM dopo l'istruzione, seguito dal commento. I commenti possono essere inseriti anche su una riga separata. Nell'esempio che segue vengono illustrate queste possibilità.

' This is a comment on a separate code line.
REM This is another comment on a separate code line.
x += a(i) * b(i) ' Add this amount to total.
MsgBox(statusMessage) REM Inform operator of status.

Controllo degli errori di compilazione

Se, dopo aver digitato una riga di codice, essa viene visualizzata in blu con una sottolineatura ondulata, talvolta accompagnata da un messaggio di errore, nell'istruzione è presente un errore di sintassi. È necessario individuare l'errore, scorrendo ad esempio l'elenco delle attività oppure posizionandosi su di esso con il puntatore del mouse e leggendo il testo del messaggio, e quindi correggerlo. Il programma potrà essere compilato correttamente solo dopo che gli errori di sintassi del codice saranno stati corretti.

Sezioni correlate

Argomento

Definizione

Operatori di assegnazione (Visual Basic)

Vengono forniti collegamenti alle pagine di riferimento relativi ad operatori di assegnazione quali =, *= e &=.

Operatori ed espressioni in Visual Basic

Viene illustrato come combinare elementi e operatori per produrre nuovi valori.

Procedura: interrompere e combinare istruzioni nel codice (Visual Basic)

Viene illustrato come suddividere una singola istruzione in più righe e come inserire più istruzioni sulla stessa riga.

Procedura: etichettare le istruzioni (Visual Basic)

Viene illustrato come etichettare una riga di codice.