Instructies in Visual Basic
Een instructie in Visual Basic is een volledige instructie. Het kan trefwoorden, operators, variabelen, constanten en expressies bevatten. Elke instructie behoort tot een van de volgende categorieën:
Declaratie-instructies, die een variabele, constante of procedure noemen, en kunnen ook een gegevenstype opgeven.
Uitvoerbare instructies, waarmee acties worden gestart. Deze instructies kunnen een methode of functie aanroepen en ze kunnen codeblokken herhalen of vertakken. Uitvoerbare instructies bevatten toewijzingsinstructies, waarmee een waarde of expressie wordt toegewezen aan een variabele of constante.
In dit onderwerp wordt elke categorie beschreven. In dit onderwerp wordt ook beschreven hoe u meerdere instructies op één regel combineert en hoe u een instructie over meerdere regels kunt voortzetten.
Declaratie-instructies
U gebruikt declaratie-instructies om procedures, variabelen, eigenschappen, matrices en constanten te benoemen en te definiëren. Wanneer u een programmeerelement declareert, kunt u ook het gegevenstype, het toegangsniveau en het bereik definiëren. Zie Kenmerken van gedeclareerde elementen voor meer informatie.
Het volgende voorbeeld bevat drie declaraties.
Public Sub ApplyFormat()
Const limit As Integer = 33
Dim thisWidget As New widget
' Insert code to implement the procedure.
End Sub
De eerste verklaring is de Sub
verklaring. Samen met de bijbehorende instructie End Sub
declareert het een procedure met de naam applyFormat
. Het geeft ook aan dat applyFormat
, Public
wat betekent dat elke code die ernaar kan verwijzen, deze kan aanroepen.
De tweede declaratie is de Const
instructie, die de constante limit
declareert, waarmee het Integer
gegevenstype en de waarde 33 worden opgegeven.
De derde declaratie is de Dim
instructie, die de variabele thisWidget
declareert. Het gegevenstype is een specifiek object, namelijk een object dat is gemaakt op basis van de Widget
klasse. U kunt een variabele declareren voor elk elementair gegevenstype of van elk objecttype dat wordt weergegeven in de toepassing die u gebruikt.
Initiële waarden
Wanneer de code met een declaratie-instructie wordt uitgevoerd, behoudt Visual Basic het geheugen dat nodig is voor het gedeclareerde element. Als het element een waarde bevat, initialiseert Visual Basic deze naar de standaardwaarde voor het gegevenstype. Zie 'Gedrag' in Dim-instructie voor meer informatie.
U kunt een initiële waarde toewijzen aan een variabele als onderdeel van de declaratie, zoals in het volgende voorbeeld wordt geïllustreerd.
Dim m As Integer = 45
' The preceding declaration creates m and assigns the value 45 to it.
Als een variabele een objectvariabele is, kunt u expliciet een exemplaar van de klasse maken wanneer u deze declareert met behulp van het trefwoord Nieuwe operator , zoals in het volgende voorbeeld wordt geïllustreerd.
Dim f As New FileInfo("filename")
Houd er rekening mee dat de initiële waarde die u opgeeft in een declaratie-instructie niet is toegewezen aan een variabele totdat de uitvoering de declaratie-instructie heeft bereikt. Tot die tijd bevat de variabele de standaardwaarde voor het gegevenstype.
Uitvoerbare instructies
Een uitvoerbare instructie voert een actie uit. Het kan een procedure aanroepen, vertakken naar een andere plaats in de code, verschillende instructies doorlopen of een expressie evalueren. Een toewijzingsinstructie is een speciaal geval van een uitvoerbare instructie.
In het volgende voorbeeld wordt een If...Then...Else
besturingsstructuur gebruikt om verschillende codeblokken uit te voeren op basis van de waarde van een variabele. Binnen elk codeblok wordt een For...Next
lus een opgegeven aantal keren uitgevoerd.
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
De If
instructie in het voorgaande voorbeeld controleert de waarde van de parameter clockwise
. Als de waarde is True
, wordt de spinClockwise
methode van aWidget
. Als de waarde is False
, wordt de spinCounterClockwise
methode van aWidget
. De If...Then...Else
besturingsstructuur eindigt met End If
.
De For...Next
lus binnen elk blok roept de juiste methode een aantal keren aan die gelijk is aan de waarde van de revolutions
parameter.
Toewijzingsinstructies
Toewijzingsinstructies voeren toewijzingsbewerkingen uit, die bestaan uit het nemen van de waarde aan de rechterkant van de toewijzingsoperator (=
) en het opslaan ervan in het element aan de linkerkant, zoals in het volgende voorbeeld.
v = 42
In het voorgaande voorbeeld slaat de toewijzingsinstructie de letterlijke waarde 42 op in de variabele v
.
In aanmerking komende programmeerelementen
Het programmeerelement aan de linkerkant van de toewijzingsoperator moet een waarde kunnen accepteren en opslaan. Dit betekent dat het een variabele of eigenschap moet zijn die niet ReadOnly is of dat het een matrixelement moet zijn. In de context van een toewijzingsinstructie wordt een dergelijk element ook wel een lvalue genoemd, voor 'linkerwaarde'.
De waarde aan de rechterkant van de toewijzingsoperator wordt gegenereerd door een expressie, die kan bestaan uit een combinatie van letterlijke waarden, constanten, variabelen, eigenschappen, matrixelementen, andere expressies of functieaanroepen. In het volgende voorbeeld ziet u dit.
x = y + z + FindResult(3)
In het voorgaande voorbeeld wordt de waarde in de variabele y
toegevoegd aan de waarde die in de variabele z
is opgeslagen en wordt vervolgens de waarde opgewaardeerd die door de aanroep naar de functie findResult
wordt geretourneerd. De totale waarde van deze expressie wordt vervolgens opgeslagen in een variabele x
.
Gegevenstypen in toewijzingsinstructies
Naast numerieke waarden kan de toewijzingsoperator ook waarden toewijzen String
, zoals in het volgende voorbeeld wordt geïllustreerd.
Dim a, b As String
a = "String variable assignment"
b = "Con" & "cat" & "enation"
' The preceding statement assigns the value "Concatenation" to b.
U kunt ook waarden toewijzen Boolean
met behulp van een Boolean
letterlijke of een Boolean
expressie, zoals in het volgende voorbeeld wordt geïllustreerd.
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.
Op dezelfde manier kunt u de juiste waarden toewijzen aan programmeerelementen van het Char
of Object
Date
het gegevenstype. U kunt ook een objectexemplaren toewijzen aan een element dat is gedeclareerd als klasse van waaruit dat exemplaar is gemaakt.
Samengestelde toewijzingsinstructies
Samengestelde toewijzingsinstructies voeren eerst een bewerking uit op een expressie voordat u deze toewijst aan een programmeerelement. In het volgende voorbeeld ziet u een van deze operators, +=
waarmee de waarde van de variabele aan de linkerkant van de operator wordt verhoogd door de waarde van de expressie aan de rechterkant.
n += 1
In het voorgaande voorbeeld wordt 1 toegevoegd aan de waarde van n
en wordt die nieuwe waarde vervolgens opgeslagen in n
. Het is een afkorting van de volgende instructie:
n = n + 1
Een verscheidenheid aan samengestelde toewijzingsbewerkingen kan worden uitgevoerd met behulp van operators van dit type. Zie Toewijzingsoperatoren voor een lijst met deze operators en meer informatie hierover.
De samenvoegingstoewijzingsoperator (&=
) is handig voor het toevoegen van een tekenreeks aan het einde van al bestaande tekenreeksen, zoals in het volgende voorbeeld wordt geïllustreerd.
Dim q As String = "Sample "
q &= "String"
' q now contains "Sample String".
Typeconversies in toewijzingsinstructies
De waarde die u aan een variabele, eigenschap of matrixelement toewijst, moet van een gegevenstype zijn dat geschikt is voor dat doelelement. Over het algemeen moet u proberen een waarde te genereren van hetzelfde gegevenstype als dat van het doelelement. Sommige typen kunnen echter tijdens de toewijzing worden geconverteerd naar andere typen.
Zie Typeconversies in Visual Basic voor meer informatie over het converteren tussen gegevenstypen. Kortom, Visual Basic converteert automatisch een waarde van een bepaald type naar een ander type waarnaar het breder wordt. Een verbreidingsconversie is een conversie waarbij de uitvoering altijd slaagt en geen gegevens kwijtraakt. Visual Basic converteert bijvoorbeeld een Integer
waarde naar Double
waar nodig, omdat Integer
deze breder wordt naar Double
. Zie Widening and Narrowing Conversions (Widening and Narrowing Conversions) voor meer informatie.
Het beperken van conversies (de conversies die niet breder worden) hebben een risico op fouten tijdens runtime of gegevensverlies. U kunt een vermalingsconversie expliciet uitvoeren met behulp van een typeconversiefunctie of u kunt de compiler om alle conversies impliciet uit te voeren door de instelling in te stellen Option Strict Off
. Zie Impliciete en expliciete conversies voor meer informatie.
Meerdere instructies op één regel plaatsen
U kunt meerdere instructies hebben op één regel, gescheiden door het dubbele punt (:
teken). In het volgende voorbeeld ziet u dit.
Dim sampleString As String = "Hello World" : MsgBox(sampleString)
Hoewel af en toe handig, maakt deze vorm van syntaxis uw code moeilijk te lezen en te onderhouden. Daarom is het raadzaam dat u één instructie op een regel houdt.
Een instructie over meerdere regels voortzetten
Een instructie past meestal op één regel, maar wanneer deze te lang is, kunt u deze doorgaan naar de volgende regel met behulp van een regelvolgorde, die bestaat uit een spatie gevolgd door een onderstrepingsteken (_
) gevolgd door een regelterugloop. In het volgende voorbeeld wordt de MsgBox
uitvoerbare instructie voortgezet over twee regels.
Public Sub DemoBox()
Dim nameVar As String
nameVar = "John"
MsgBox("Hello " & nameVar _
& ". How are you?")
End Sub
Impliciete regelvervolging
In veel gevallen kunt u een instructie op de volgende opeenvolgende regel voortzetten zonder het onderstrepingsteken (_
). De volgende syntaxiselementen gaan impliciet door met de instructie op de volgende regel code.
Na een komma (
,
). Voorbeeld:Public Function GetUsername(ByVal username As String, ByVal delimiter As Char, ByVal position As Integer) As String Return username.Split(delimiter)(position) End Function
Na een haakje openen (
(
) of voor een haakje sluiten ()
). Voorbeeld:Dim username = GetUsername( Security.Principal.WindowsIdentity.GetCurrent().Name, CChar("\"), 1 )
Na een open accolade (
{
) of voor een afsluitende accolade (}
). Voorbeeld:Dim customer = New Customer With { .Name = "Terry Adams", .Company = "Adventure Works", .Email = "terry@www.adventure-works.com" }
Zie Object Initializers: Named and Anonymous Types or Collection Initializers (Initializers voor objecten) voor meer informatie.
Na een geopende ingesloten expressie (
<%=
) of vóór de sluiting van een ingesloten expressie (%>
) binnen een letterlijke XML-indeling. Voorbeeld:Dim customerXml = <Customer> <Name> <%= customer.Name %> </Name> <Email> <%= customer.Email %> </Email> </Customer>
Zie Ingesloten expressies in XML voor meer informatie.
Na de samenvoegingsoperator (
&
). Voorbeeld:cmd.CommandText = "SELECT * FROM Titles JOIN Publishers " & "ON Publishers.PubId = Titles.PubID " & "WHERE Publishers.State = 'CA'"
Zie Operators vermeld op Functionaliteit voor meer informatie.
Na toewijzingsoperatoren (, , , , ,
-=
,*=
,/=
,\=
, ,^=
, ).<<=
>>=
+=
:=
&=
=
Voorbeeld:Dim fileStream = My.Computer.FileSystem. OpenTextFileReader(filePath)
Zie Operators vermeld op Functionaliteit voor meer informatie.
Na binaire operators (
+
,-
,/
,*
, ,Mod
,<
<>
, , ,<=
>
, ,>>
<<
Or
AndAlso
OrElse
^
And
>=
)Like
Xor
binnen een expressie. Voorbeeld:Dim memoryInUse = My.Computer.Info.TotalPhysicalMemory + My.Computer.Info.TotalVirtualMemory - My.Computer.Info.AvailablePhysicalMemory - My.Computer.Info.AvailableVirtualMemory
Zie Operators vermeld op Functionaliteit voor meer informatie.
Na de
Is
enIsNot
operators. Voorbeeld:If TypeOf inStream Is IO.FileStream AndAlso inStream IsNot Nothing Then ReadFile(inStream) End If
Zie Operators vermeld op Functionaliteit voor meer informatie.
Na het kwalificatieteken van een lid (
.
) en vóór de naam van het lid. Voorbeeld:Dim fileStream = My.Computer.FileSystem. OpenTextFileReader(filePath)
U moet echter een regelvervolgteken (
_
) toevoegen aan een lidscheidingsteken wanneer u deWith
instructie gebruikt of waarden opgeeft in de initialisatielijst voor een type. Overweeg de regel te verbreken na de toewijzingsoperator (bijvoorbeeld=
) wanneer u instructies of lijsten voor object initialisatie gebruiktWith
. Voorbeeld:' 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
Zie With voor meer informatie ... Eindigen met instructie - of objectinitiizers: benoemde en anonieme typen.
Na een eigenschapsscheidingsteken voor xml-as (
.
of.@
)....
U moet echter een regelvervolgteken (_
) opnemen wanneer u een lidscheidingsteken opgeeft wanneer u hetWith
trefwoord gebruikt. Voorbeeld:Dim customerName = customerXml. <Name>.Value Dim customerEmail = customerXml... <Email>.Value
Zie Eigenschappen van XML-as voor meer informatie.
Na een kleiner dan-teken (<) of vóór een groter dan-teken (
>
) wanneer u een kenmerk opgeeft. Ook na een groter teken (>
) wanneer u een kenmerk opgeeft. U moet echter een regelvervolgteken (_
) opnemen wanneer u kenmerken op assembly- of moduleniveau opgeeft. Voorbeeld:< Serializable() > Public Class Customer Public Property Name As String Public Property Company As String Public Property Email As String End Class
Zie Het overzicht van kenmerken voor meer informatie.
Voor en na queryoperators (, , ,
From
Group By
,Group Join
, ,Join
, ,Let
, ,Take
On
Ascending
Into
In
Skip While
Order By
Where
Skip
Select
Take While
en ).Descending
Distinct
Aggregate
U kunt een regel niet verbreken tussen de trefwoorden van queryoperators die bestaan uit meerdere trefwoorden (Order By
,Group Join
,Take While
en ).Skip While
Voorbeeld:Dim vsProcesses = From proc In Process.GetProcesses Where proc.MainWindowTitle.Contains("Visual Studio") Select proc.ProcessName, proc.Id, proc.MainWindowTitle
Zie Query's voor meer informatie.
Na het
In
trefwoord in eenFor Each
instructie. Voorbeeld:For Each p In vsProcesses Console.WriteLine("{0}" & vbTab & "{1}" & vbTab & "{2}", p.ProcessName, p.Id, p.MainWindowTitle) Next
Zie For Each voor meer informatie ... Volgende instructie.
Na het
From
trefwoord in een initialisatiefunctie voor verzamelingen. Voorbeeld:Dim days = New List(Of String) From { "Mo", "Tu", "We", "Th", "F", "Sa", "Su" }
Zie Initializers voor verzamelingen voor meer informatie.
Opmerkingen toevoegen
Broncode is niet altijd verklarend, zelfs niet voor de programmeur die deze heeft geschreven. Om hun code te documenteren, maken de meeste programmeurs daarom vrij gebruik van ingesloten opmerkingen. Opmerkingen in code kunnen een procedure of een bepaalde instructie uitleggen aan iedereen die er later mee leest of ermee werkt. Visual Basic negeert opmerkingen tijdens de compilatie en heeft geen invloed op de gecompileerde code.
Opmerkingenregels beginnen met een apostrof ('
) of REM
gevolgd door een spatie. Ze kunnen overal in code worden toegevoegd, behalve in een tekenreeks. Als u een opmerking wilt toevoegen aan een instructie, voegt u een apostrof of REM
na de instructie in, gevolgd door de opmerking. Opmerkingen kunnen ook op hun eigen afzonderlijke regel worden geplaatst. In het volgende voorbeeld ziet u deze mogelijkheden.
' 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.
Compilatiefouten controleren
Als, nadat u een coderegel hebt getypt, de lijn wordt weergegeven met een golvende blauwe onderstreping (er kan ook een foutbericht worden weergegeven), is er een syntaxisfout in de instructie. U moet nagaan wat er mis is met de instructie (door in de takenlijst te kijken of door de muisaanwijzer boven de fout te bewegen en het foutbericht te lezen) en dit te corrigeren. Totdat u alle syntaxisfouten in uw code hebt opgelost, kan uw programma niet correct worden gecompileerd.
Verwante secties
Term | Definitie |
---|---|
Toewijzingsoperatoren | Bevat koppelingen naar taalreferentiepagina's voor toewijzingsoperatoren zoals = , *= en &= . |
Operators en expressies | Laat zien hoe u elementen combineert met operators om nieuwe waarden op te leveren. |
Instructies: Instructies onderbreken en combineren in code | Laat zien hoe u één instructie in meerdere regels opsplitst en hoe u meerdere instructies op dezelfde regel plaatst. |
Instructies: Labelinstructies | Laat zien hoe u een regel code labelt. |