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 , Publicwat betekent dat elke code die ernaar kan verwijzen, deze kan aanroepen.

De tweede declaratie is de Const instructie, die de constante limitdeclareert, waarmee het Integer gegevenstype en de waarde 33 worden opgegeven.

De derde declaratie is de Dim instructie, die de variabele thisWidgetdeclareert. 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 zis opgeslagen en wordt vervolgens de waarde opgewaardeerd die door de aanroep naar de functie findResultwordt 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 Charof ObjectDatehet 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 nen 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, <<>, , , <=>, , >><<OrAndAlsoOrElse^And>=) LikeXorbinnen 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 en IsNot 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 de With 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 gebruikt With . 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 het With 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 (, , , FromGroup By, Group Join, , Join, , Let, , TakeOnAscendingIntoInSkip WhileOrder ByWhereSkipSelectTake Whileen ).DescendingDistinctAggregate U kunt een regel niet verbreken tussen de trefwoorden van queryoperators die bestaan uit meerdere trefwoorden (Order By, Group Join, Take Whileen ).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 een For 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.

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.