Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Een statement in Visual Basic is een volledige instructie. Het kan trefwoorden, operators, variabelen, constanten en expressies bevatten. Elke uitspraak 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.
Verklaringsuitspraken
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 alle 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 True
is, wordt de methode spinClockwise
van aWidget
aangeroepen. Als de waarde False
is, wordt de methode spinCounterClockwise
van aWidget
aangeroepen. 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.
Toewijzingsopdrachten
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 zo'n element soms een lvalue genoemd, wat staat 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 passende waarden toewijzen aan programmeerelementen van het Char
, Date
, of Object
gegevenstype. U kunt ook een objectexemplaar toewijzen aan een element dat is gedeclareerd als behorende tot de klasse waarvan dat exemplaar is gemaakt.
Samengestelde toewijzingsuitdrukkingen
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 toewijzingsuitdrukkingen
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 verbredings- en vernauwingsconversies 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 versmallende conversie expliciet uitvoeren met behulp van een typeconversiefunctie, of u kunt de compiler alle conversies impliciet uit laten voeren door Option Strict Off
in te schakelen. Zie Impliciete en expliciete conversies voor meer informatie.
Meerdere instructies op één regel plaatsen
U kunt meerdere instructies op één regel plaatsen, gescheiden door het dubbele-puntteken (:
). 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 uitspraak per regel houdt.
Een verklaring over meerdere regels doorgaan
Een instructie past meestal op één regel, maar wanneer deze te lang is, kunt u deze voortzetten naar de volgende regel met behulp van een regelvoortzetting, die bestaat uit een spatie gevolgd door een underscore (_
) gevolgd door een carriage return. 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 doorlopende regel
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 openend haakje (
(
) of voor een sluitend haakje ()
). 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 of Collection Initializers 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 gerangschikt op basis van Functionaliteit voor meer informatie.
Na toewijzingsoperatoren (
=
,&=
,:=
,+=
,-=
,*=
,/=
,\=
,^=
,<<=
,>>=
). Voorbeeld:Dim fileStream = My.Computer.FileSystem. OpenTextFileReader(filePath)
Zie Operators gerangschikt op basis van Functionaliteit voor meer informatie.
Na binaire operators (
+
,-
,/
,*
,Mod
,<>
,<
,>
,<=
,>=
,^
,>>
,<<
,And
,AndAlso
,Or
,OrElse
,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 gerangschikt op basis van 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 gerangschikt op basis van 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 uWith
-instructies of objectinitialisatielijsten gebruikt. 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 Met...Eindigen met-instructie of Objectinitialisatie: Benoemde en Anonieme Typen voor meer informatie.
Na een xml-aseigenschapscategorisering (
.
of.@
of...
). U moet echter een regelvervolgteken (_
) opnemen wanneer u een lidkenmerk opgeeft met behulp van hetWith
trefwoord. Voorbeeld:Dim customerName = customerXml. <Name>.Value Dim customerEmail = customerXml... <Email>.Value
Meer informatie vindt u in Eigenschappen van de XML-as.
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 (
Aggregate
,Distinct
,From
,Group By
,Group Join
,Join
,Let
,Order By
,Select
,Skip
,Skip While
,Take
,Take While
,Where
,In
,Into
,On
,Ascending
enDescending
). 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
Na het
From
trefwoord in een verzamelingsinitializer. 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 aparte 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
Termijn | 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. |
Handleiding: Verklaringen Labelen | Laat zien hoe u een regel code labelt. |