Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Un'istruzione in Visual Basic è un'istruzione completa. Può contenere parole chiave, operatori, variabili, costanti ed espressioni. Ogni affermazione appartiene a una delle categorie seguenti:
Istruzioni di dichiarazione, che denominano una variabile, una costante o una routine e possono anche specificare un tipo di dati.
Istruzioni eseguibili, che avviano azioni. Queste istruzioni possono chiamare un metodo o una funzione e possono creare cicli o ramificazioni attraverso blocchi di codice. Le istruzioni eseguibili includono istruzioni di assegnazione, che assegnano un valore o un'espressione a una variabile o a una costante.
Questo argomento descrive ogni categoria. In questo argomento viene inoltre descritto come combinare più istruzioni su una singola riga e come continuare un'istruzione su più righe.
Dichiarazioni
Si usano istruzioni di dichiarazione per denominare e definire procedure, 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 altre informazioni, vedere Caratteristiche degli elementi dichiarati.
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 all'istruzione corrispondente End Sub
, dichiara una routine denominata applyFormat
. Specifica anche che applyFormat
è Public
, il che significa che qualsiasi codice che può fare riferimento ad esso può chiamarlo.
La seconda dichiarazione è l'istruzione Const
, che dichiara la costante limit
, specificando il Integer
tipo di dati e il valore 33.
La terza dichiarazione è l'istruzione Dim
, che dichiara la variabile thisWidget
. Il tipo di dati è un oggetto specifico, ovvero un oggetto creato dalla Widget
classe . È possibile dichiarare una variabile come qualsiasi tipo di dati elementare o di qualsiasi tipo di oggetto esposto nell'applicazione in uso.
Valori iniziali
Quando viene eseguito il codice contenente un'istruzione di dichiarazione, Visual Basic riserva la memoria necessaria per l'elemento dichiarato. Se l'elemento contiene un valore, Visual Basic lo inizializza sul valore predefinito per il relativo tipo di dati. Per ulteriori informazioni, vedere "Comportamento" in dichiarazione Dim.
È possibile assegnare un valore iniziale a una variabile come parte della relativa dichiarazione, come illustrato nell'esempio seguente.
Dim m As Integer = 45
' The preceding declaration creates m and assigns the value 45 to it.
Se una variabile è una variabile oggetto, è possibile creare in modo esplicito un'istanza della relativa classe quando la si dichiara usando la parola chiave New Operator , come illustrato nell'esempio seguente.
Dim f As New FileInfo("filename")
Si noti che il valore iniziale specificato in un'istruzione di dichiarazione non viene assegnato a una variabile finché l'esecuzione non raggiunge l'istruzione di dichiarazione. Fino a quel momento, la variabile contiene il valore predefinito per il tipo di dati.
Istruzioni eseguibili
Un'istruzione eseguibile esegue un'azione. Può chiamare una procedura, passare a un'altra posizione nel codice, eseguire un ciclo attraverso diverse istruzioni o valutare un'espressione. Un'istruzione di assegnazione è un caso speciale di un'istruzione eseguibile.
Nell'esempio seguente viene utilizzata una If...Then...Else
struttura di controllo per eseguire blocchi di codice diversi in base al valore di una variabile. All'interno di ogni blocco di codice, un For...Next
ciclo esegue un numero specificato di volte.
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 controlla il valore del parametro clockwise
. Se il valore è True
, chiama il spinClockwise
metodo di aWidget
. Se il valore è False
, chiama il spinCounterClockwise
metodo di aWidget
. La struttura del If...Then...Else
controllo termina con End If
.
Il For...Next
ciclo all'interno di ogni blocco chiama il metodo appropriato tante volte quanto il valore del parametro revolutions
.
Istruzioni di assegnazione
Le istruzioni di assegnazione eseguono operazioni di assegnazione, costituite dall'acquisizione del valore a destra dell'operatore di assegnazione (=
) e dall'archiviazione nell'elemento a sinistra, come nell'esempio seguente.
v = 42
Nell'esempio precedente l'istruzione di assegnazione archivia 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. Ciò significa che deve essere una variabile o una proprietà che non è ReadOnly oppure deve essere un elemento di matrice. Nel contesto di un'istruzione di assegnazione, un elemento del genere viene talvolta chiamato lvalue, che significa "valore sinistro".
Il valore a destra dell'operatore di assegnazione viene generato da un'espressione, che può essere costituita da qualsiasi combinazione di valori letterali, costanti, variabili, proprietà, elementi di matrice, altre espressioni o chiamate di funzione. Nell'esempio seguente viene illustrato questo.
x = y + z + FindResult(3)
L'esempio precedente aggiunge il valore mantenuto nella variabile y
al valore mantenuto nella variabile z
e quindi aggiunge il valore restituito dalla chiamata alla funzione findResult
. Il valore totale di questa espressione viene quindi archiviato nella variabile x
.
Tipi di dati nelle istruzioni di assegnazione
Oltre ai valori numerici, l'operatore di assegnazione può anche assegnare String
valori, 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 Boolean
valori, usando un Boolean
valore letterale 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.
Analogamente, è possibile assegnare valori appropriati agli elementi di programmazione del Char
tipo di dati , Date
o Object
. È anche possibile assegnare un'istanza dell'oggetto a un elemento dichiarato come della classe da cui viene creata l'istanza.
Istruzioni di assegnazione composte
Le istruzioni di assegnazione composte eseguono prima di tutto un'operazione su un'espressione prima di assegnarla a un elemento di programmazione. Nell'esempio seguente viene illustrato uno di questi operatori, +=
, che incrementa il valore della variabile a sinistra dell'operatore in base al valore dell'espressione a destra.
n += 1
L'esempio precedente aggiunge 1 al valore di n
e quindi archivia il nuovo valore in n
. Si tratta di un equivalente abbreviato dell'istruzione seguente:
n = n + 1
È possibile eseguire un'ampia gamma di operazioni di assegnazione composta usando gli operatori di questo tipo. Per un elenco di questi operatori e altre informazioni su di essi, vedere Operatori di assegnazione.
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 dei tipi nelle istruzioni di assegnazione
Il valore assegnato a una variabile, una proprietà o un elemento matrice deve essere di un tipo di dati appropriato per tale elemento di destinazione. In generale, è consigliabile provare a generare un valore dello stesso tipo di dati dell'elemento di destinazione. Tuttavia, alcuni tipi possono essere convertiti in altri tipi durante l'assegnazione.
Per informazioni sulla conversione tra tipi di dati, vedere Conversioni dei tipi in Visual Basic. In breve, Visual Basic converte automaticamente un valore di un determinato tipo in qualsiasi altro tipo in cui si estende. Una conversione di espansione è una che ha sempre successo in fase di esecuzione e non perde dati. Ad esempio, Visual Basic converte un Integer
valore in Double
quando appropriato, perché Integer
si estende a Double
. Per altre informazioni, vedere Conversioni di tipo Widening and Narrowing.
Le conversioni di tipo narrowing (quelle che non sono ingrandite) comportano un rischio di errore in fase di esecuzione o di perdita di dati. È possibile eseguire una conversione verso un tipo più piccolo in modo esplicito usando una funzione di conversione dei tipi oppure indirizzare il compilatore a eseguire tutte le conversioni in modo implicito impostando Option Strict Off
. Per altre informazioni, vedere Conversioni implicite ed esplicite.
Inserimento di più istruzioni su una riga
È possibile avere istruzioni multiple su una singola riga, separate dal carattere due punti (:
). Nell'esempio seguente viene illustrato questo.
Dim sampleString As String = "Hello World" : MsgBox(sampleString)
Anche se occasionalmente conveniente, questa forma di sintassi rende difficile leggere e gestire il codice. Pertanto, è consigliabile lasciare una dichiarazione per riga.
Continuazione di un'istruzione su più righe
Di solito un'istruzione si adatta a una riga, ma quando è troppo lunga, è possibile continuare nella riga successiva usando una sequenza di continuazione di riga, costituita da uno spazio seguito da un carattere di sottolineatura (_
) seguito da un ritorno a capo. Nell'esempio seguente l'istruzione MsgBox
eseguibile viene continuata 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 nella riga consecutiva successiva senza usare il carattere di sottolineatura (_
). Gli elementi della sintassi seguenti continuano in modo implicito l'istruzione nella riga di codice successiva.
Dopo una virgola (
,
). Per esempio:Public Function GetUsername(ByVal username As String, ByVal delimiter As Char, ByVal position As Integer) As String Return username.Split(delimiter)(position) End Function
Dopo una parentesi aperta (
(
) o prima di una parentesi chiusa ()
). Per esempio:Dim username = GetUsername( Security.Principal.WindowsIdentity.GetCurrent().Name, CChar("\"), 1 )
Dopo una parentesi graffa aperta (
{
) o prima di una parentesi graffa chiusa (}
). Per esempio:Dim customer = New Customer With { .Name = "Terry Adams", .Company = "Adventure Works", .Email = "terry@www.adventure-works.com" }
Per altre informazioni, vedere Inizializzatori di oggetti: tipi denominati e anonimi o inizializzatori di raccolta.
Dopo un'espressione incorporata aperta (
<%=
) o prima della chiusura di un'espressione incorporata (%>
) all'interno di un valore letterale XML. Per esempio:Dim customerXml = <Customer> <Name> <%= customer.Name %> </Name> <Email> <%= customer.Email %> </Email> </Customer>
Per altre informazioni, vedere Espressioni incorporate in XML.
Dopo l'operatore di concatenazione (
&
). Per esempio:cmd.CommandText = "SELECT * FROM Titles JOIN Publishers " & "ON Publishers.PubId = Titles.PubID " & "WHERE Publishers.State = 'CA'"
Per altre informazioni, vedere Operatori elencati per funzionalità.
Dopo gli operatori di assegnazione (
=
,&=
,:=
,+=
,-=
,*=
,/=
,\=
,^=
,<<=
,>>=
). Per esempio:Dim fileStream = My.Computer.FileSystem. OpenTextFileReader(filePath)
Per altre informazioni, vedere Operatori elencati per funzionalità.
Dopo gli operatori binari (
+
,-
,/
,*
,Mod
,<>
,<
,>
,<=
,>=
,^
,>>
,<<
,And
,AndAlso
,Or
,OrElse
,Like
,Xor
) all'interno di un'espressione. Per esempio:Dim memoryInUse = My.Computer.Info.TotalPhysicalMemory + My.Computer.Info.TotalVirtualMemory - My.Computer.Info.AvailablePhysicalMemory - My.Computer.Info.AvailableVirtualMemory
Per altre informazioni, vedere Operatori elencati per funzionalità.
Dopo gli
Is
eIsNot
operatori. Per esempio:If TypeOf inStream Is IO.FileStream AndAlso inStream IsNot Nothing Then ReadFile(inStream) End If
Per altre informazioni, vedere Operatori elencati per funzionalità.
Dopo un carattere qualificatore membro (
.
) e prima del nome del membro. Per esempio:Dim fileStream = My.Computer.FileSystem. OpenTextFileReader(filePath)
Tuttavia, è necessario includere un carattere di continuazione riga (
_
) seguito da un carattere qualificatore di membro quando si utilizza l'istruzioneWith
o si forniscono valori nell'elenco di inizializzazione per un tipo. Considera l'interruzione della riga dopo l'operatore di assegnazione (ad esempio,=
) quando usi istruzioniWith
o elenchi di inizializzazione di oggetti. Per esempio:' Not allowed: ' Dim aType = New With { . ' PropertyName = "Value" ' Allowed: Dim aType = New With {.PropertyName = "Value"} Dim log As New EventLog() ' Not allowed: ' With log ' . ' Source = "Application" ' End With ' Allowed: With log .Source = "Application" End With
Per ulteriori informazioni, vedere With...End With Statement o Inizializzatori di oggetti: tipi denominati e anonimi.
Dopo un "qualificatore di proprietà" dell'asse XML, come
.
,.@
o...
. Tuttavia, è necessario includere un carattere di continuazione riga (_
) quando si specifica un qualificatore di membro quando si usa laWith
parola chiave . Per esempio:Dim customerName = customerXml. <Name>.Value Dim customerEmail = customerXml... <Email>.Value
Per altre informazioni, vedere Proprietà asse XML.
Dopo un segno minore di (<) o prima di un segno maggiore di (
>
) quando si specifica un attributo. Inoltre, dopo un segno maggiore di (>
) quando si specifica un attributo. Tuttavia, è necessario includere un carattere di continuazione riga (_
) quando si specificano attributi a livello di assembly o a livello di modulo. Per esempio:< Serializable() > Public Class Customer Public Property Name As String Public Property Company As String Public Property Email As String End Class
Per altre informazioni, vedere Panoramica degli attributi.
Operatori di query prima e dopo (
Aggregate
,Distinct
,From
,Group By
,Group Join
,Join
,Let
,Order By
,Select
,Skip
,Skip While
,Take
,Take While
,Where
,In
,Into
,On
,Ascending
, eDescending
). Non è possibile interrompere una riga tra le parole chiave degli operatori di query costituiti da più parole chiave (Order By
,Group Join
,Take While
eSkip While
). Per esempio:Dim vsProcesses = From proc In Process.GetProcesses Where proc.MainWindowTitle.Contains("Visual Studio") Select proc.ProcessName, proc.Id, proc.MainWindowTitle
Per altre informazioni, vedere Query.
Dopo la
In
parola chiave in istruzioneFor Each
. Per esempio:For Each p In vsProcesses Console.WriteLine("{0}" & vbTab & "{1}" & vbTab & "{2}", p.ProcessName, p.Id, p.MainWindowTitle) Next
Per ulteriori informazioni, vedere For Each...Next.
Dopo la
From
parola chiave in un inizializzatore di raccolta. Per esempio:Dim days = New List(Of String) From { "Mo", "Tu", "We", "Th", "F", "Sa", "Su" }
Per altre informazioni, vedere Inizializzatori di raccolta.
Aggiunta di commenti
Il codice sorgente non è sempre autoesplicativo, anche per il programmatore che lo ha scritto. Per documentare il codice, pertanto, la maggior parte dei programmatori usa in modo liberale i commenti incorporati. I commenti nel codice possono spiegare una routine o una particolare istruzione a chiunque legga o lavori in un secondo momento. Visual Basic ignora i commenti durante la compilazione e non influisce sul codice compilato.
Le righe di commento iniziano con un apostrofo ('
) o REM
seguite da uno spazio. Possono essere aggiunti in qualsiasi punto del codice, tranne all'interno di una stringa. Per aggiungere un commento a un'istruzione, inserire un apostrofo o REM
dopo l'istruzione , seguito dal commento. I commenti possono anche andare su una riga separata. Nell'esempio seguente 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, la riga viene visualizzata con una sottolineatura blu ondulata (potrebbe essere visualizzato anche un messaggio di errore), si verifica un errore di sintassi nell'istruzione . È necessario scoprire cosa non va nell'affermazione (cercando nell'elenco attività o passando il puntatore del mouse sull'errore e leggendo il messaggio di errore) e correggerlo. Fino a quando non sono stati corretti tutti gli errori di sintassi nel codice, il programma non verrà compilato correttamente.
Sezioni correlate
Termine | Definizione |
---|---|
operatori di assegnazione | Fornisce collegamenti alle pagine di riferimento del linguaggio che coprono operatori di assegnazione come = , *= e &= . |
Operatori ed espressioni | Illustra come combinare gli elementi con gli operatori per produrre nuovi valori. |
Guida a: Suddividere e combinare istruzioni nel codice | Viene illustrato come suddividere una singola istruzione in più righe e come inserire più istruzioni nella stessa riga. |
Procedura: Etichettare istruzioni | Illustra come etichettare una riga di codice. |