Instruktioner i Visual Basic

En instruktion i Visual Basic är en fullständig instruktion. Den kan innehålla nyckelord, operatorer, variabler, konstanter och uttryck. Varje instruktion tillhör någon av följande kategorier:

  • Deklarationsuttryck, som namnger en variabel, konstant eller procedur, och kan även ange en datatyp.

  • Körbara instruktioner, som initierar åtgärder. Dessa instruktioner kan anropa en metod eller funktion, och de kan loopa eller förgrenas via kodblock. Körbara instruktioner innehåller Tilldelningsuttryck som tilldelar ett värde eller uttryck till en variabel eller konstant.

I det här avsnittet beskrivs varje kategori. Det här avsnittet beskriver också hur du kombinerar flera instruktioner på en enda rad och hur du fortsätter en instruktion över flera rader.

Deklarationsuttryck

Du använder deklarationssatser för att namnge och definiera procedurer, variabler, egenskaper, matriser och konstanter. När du deklarerar ett programmeringselement kan du också definiera dess datatyp, åtkomstnivå och omfång. Mer information finns i Egenskaper för deklarerade element.

Följande exempel innehåller tre deklarationer.

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

Den första deklarationen är -instruktionen Sub . Tillsammans med dess matchande End Sub -instruktion deklarerar den en procedur med namnet applyFormat. Det anger också att applyFormat är Public, vilket innebär att all kod som kan referera till den kan anropa den.

Den andra deklarationen är -instruktionen Const , som deklarerar konstanten limit, som Integer anger datatypen och värdet 33.

Den tredje deklarationen är -instruktionen Dim som deklarerar variabeln thisWidget. Datatypen är ett specifikt objekt, nämligen ett objekt som skapats Widget från klassen. Du kan deklarera att en variabel ska vara av valfri elementär datatyp eller av någon objekttyp som exponeras i det program som du använder.

Initiala värden

När koden som innehåller en deklarationssats körs reserverar Visual Basic det minne som krävs för det deklarerade elementet. Om elementet innehåller ett värde initierar Visual Basic det till standardvärdet för dess datatyp. Mer information finns i "Beteende" i Dim-instruktion.

Du kan tilldela ett initialt värde till en variabel som en del av deklarationen, vilket visas i följande exempel.

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

Om en variabel är en objektvariabel kan du uttryckligen skapa en instans av dess klass när du deklarerar den med nyckelordet Ny operator , vilket visas i följande exempel.

Dim f As New FileInfo("filename")

Observera att det initiala värdet som du anger i en deklarationssats inte tilldelas till en variabel förrän körningen når dess deklarationsinstruktur. Fram till dess innehåller variabeln standardvärdet för dess datatyp.

Körbara instruktioner

En körbar instruktion utför en åtgärd. Den kan anropa en procedur, förgrena sig till en annan plats i koden, loopa igenom flera instruktioner eller utvärdera ett uttryck. En tilldelningsinstruktor är ett specialfall för en körbar instruktion.

I följande exempel används en If...Then...Else kontrollstruktur för att köra olika kodblock baserat på värdet för en variabel. Inom varje kodblock kör en For...Next loop ett angivet antal gånger.

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

- If instruktionen i föregående exempel kontrollerar värdet för parametern clockwise. Om värdet är Trueanropas spinClockwise metoden aWidget. Om värdet är Falseanropas spinCounterClockwise metoden aWidget. Kontrollstrukturen If...Then...Else slutar med End If.

Loopen For...Next i varje block anropar lämplig metod ett antal gånger som är lika med parameterns revolutions värde.

Tilldelningsuttryck

Tilldelningssatser utför tilldelningsåtgärder, som består av att ta värdet till höger om tilldelningsoperatorn (=) och lagra det i elementet till vänster, som i följande exempel.

v = 42

I föregående exempel lagrar tilldelningssatsen literalvärdet 42 i variabeln v.

Berättigade programmeringselement

Programmeringselementet till vänster om tilldelningsoperatorn måste kunna acceptera och lagra ett värde. Det innebär att det måste vara en variabel eller egenskap som inte är ReadOnly, eller så måste det vara ett matriselement. I samband med en tilldelningsuttryck kallas ett sådant element ibland för ett lvalue för "vänstervärde".

Värdet till höger om tilldelningsoperatorn genereras av ett uttryck som kan bestå av valfri kombination av literaler, konstanter, variabler, egenskaper, matriselement, andra uttryck eller funktionsanrop. I följande exempel visas detta.

x = y + z + FindResult(3)

I föregående exempel läggs värdet som lagras i variabeln y till värdet som lagras i variabeln zoch lägger sedan till värdet som returneras av anropet till funktionen findResult. Det totala värdet för det här uttrycket lagras sedan i variabeln x.

Datatyper i tilldelningsuttryck

Förutom numeriska värden kan tilldelningsoperatorn också tilldela String värden, vilket visas i följande exempel.

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

Du kan också tilldela Boolean värden med hjälp av antingen en Boolean literal eller ett Boolean uttryck, vilket visas i följande exempel.

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.

På samma sätt kan du tilldela lämpliga värden till programmeringselement av Chardatatypen , Dateeller Object . Du kan också tilldela en objektinstans till ett element som deklarerats vara av den klass som instansen skapas från.

Sammansatta tilldelningsuttryck

Sammansatta tilldelningsinstruktioner utför först en åtgärd på ett uttryck innan du tilldelar det till ett programmeringselement. I följande exempel visas en av dessa operatorer, +=, som ökar värdet för variabeln till vänster om operatorn med värdet för uttrycket till höger.

n += 1

Föregående exempel lägger till 1 i värdet nför och lagrar sedan det nya värdet i n. Det är en kortfattad motsvarighet till följande instruktion:

n = n + 1

En mängd olika sammansatta tilldelningsåtgärder kan utföras med operatorer av den här typen. En lista över dessa operatorer och mer information om dem finns i Tilldelningsoperatorer.

Sammanfogningstilldelningsoperatorn (&=) är användbar för att lägga till en sträng i slutet av redan befintliga strängar, vilket visas i följande exempel.

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

Skriv konverteringar i tilldelningsuttryck

Värdet som du tilldelar till en variabel, egenskap eller matriselement måste vara av en datatyp som är lämplig för målelementet. I allmänhet bör du försöka generera ett värde av samma datatyp som målelementets. Vissa typer kan dock konverteras till andra typer under tilldelningen.

Information om hur du konverterar mellan datatyper finns i Typkonverteringar i Visual Basic. I korthet konverterar Visual Basic automatiskt ett värde av en viss typ till någon annan typ som den breddar till. En bredare konvertering är en i som alltid lyckas vid körning och inte förlorar några data. Visual Basic konverterar till exempel ett Integer värde till Double när det är lämpligt, eftersom Integer breddar till Double. Mer information finns i Widening and Narrowing Conversions (Bredda och begränsa konverteringar).

Begränsade konverteringar (de som inte utvidgas ) medför risk för fel vid körning eller dataförlust. Du kan utföra en begränsad konvertering explicit med hjälp av en typkonverteringsfunktion, eller så kan du dirigera kompilatorn att utföra alla konverteringar implicit genom att ange Option Strict Off. Mer information finns i Implicita och explicita konverteringar.

Placera flera instruktioner på en rad

Du kan ha flera instruktioner på en enda rad avgränsade med kolontecknet (:). I följande exempel visas detta.

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

Även om det ibland är praktiskt gör den här typen av syntax din kod svår att läsa och underhålla. Därför rekommenderar vi att du behåller en instruktion till en rad.

Fortsätta en instruktion över flera rader

En instruktion passar vanligtvis på en rad, men när den är för lång kan du fortsätta den till nästa rad med hjälp av en radfortsättningssekvens, som består av ett blanksteg följt av ett understreckstecken (_) följt av en vagnretur. I följande exempel fortsätter den körbara instruktionen MsgBox över två rader.

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

Implicit radfortsättning

I många fall kan du fortsätta en instruktion på nästa rad i följd utan att använda understreckstecknet (_). Följande syntaxelement fortsätter implicit -instruktionen på nästa kodrad.

  • Efter ett kommatecken (,). Till exempel:

    Public Function GetUsername(ByVal username As String,
                                ByVal delimiter As Char,
                                ByVal position As Integer) As String
    
        Return username.Split(delimiter)(position)
    End Function
    
  • Efter en öppen parentes (() eller före en avslutande parentes ()). Till exempel:

    Dim username = GetUsername(
        Security.Principal.WindowsIdentity.GetCurrent().Name,
        CChar("\"),
        1
      )
    
  • Efter en öppen klammerparentes ({) eller före en avslutande klammerparentes (}). Till exempel:

    Dim customer = New Customer With {
      .Name = "Terry Adams",
      .Company = "Adventure Works",
      .Email = "terry@www.adventure-works.com"
    }
    

    Mer information finns i Objektinitierare: Namngivna och anonyma typer eller insamlingsinitierare.

  • Efter ett öppet inbäddat uttryck (<%=) eller före slutet av ett inbäddat uttryck (%>) i en XML-literal. Till exempel:

    Dim customerXml = <Customer>
                          <Name>
                              <%=
                                  customer.Name
                              %>
                          </Name>
                          <Email>
                              <%=
                                  customer.Email
                              %>
                          </Email>
                      </Customer>
    

    Mer information finns i Inbäddade uttryck i XML.

  • Efter sammanfogningsoperatorn (&). Till exempel:

    cmd.CommandText = 
        "SELECT * FROM Titles JOIN Publishers " &
        "ON Publishers.PubId = Titles.PubID " &
        "WHERE Publishers.State = 'CA'"
    

    Mer information finns i Operatorer listade efter funktionalitet.

  • Efter tilldelningsoperatorer (=, &=, :=, +=, -=, *=, /=\=, ^=, <<=, >>=). Till exempel:

    Dim fileStream =
      My.Computer.FileSystem.
        OpenTextFileReader(filePath)
    

    Mer information finns i Operatorer listade efter funktionalitet.

  • Efter binära operatorer (+, -, /, *, Mod, <>, <, >, <=, , >=, ^, >>, <<And, AndAlso, Or, OrElse, Like) Xori ett uttryck. Till exempel:

    Dim memoryInUse =
      My.Computer.Info.TotalPhysicalMemory +
      My.Computer.Info.TotalVirtualMemory -
      My.Computer.Info.AvailablePhysicalMemory -
      My.Computer.Info.AvailableVirtualMemory
    

    Mer information finns i Operatorer listade efter funktionalitet.

  • Efter operatorerna Is och IsNot . Till exempel:

    If TypeOf inStream Is 
      IO.FileStream AndAlso
      inStream IsNot
      Nothing Then
    
        ReadFile(inStream)
    
    End If
    

    Mer information finns i Operatorer listade efter funktionalitet.

  • Efter ett medlemskvaltecken (.) och före medlemsnamnet. Till exempel:

    Dim fileStream =
      My.Computer.FileSystem.
        OpenTextFileReader(filePath)
    

    Du måste dock inkludera ett radfortsättningstecken (_) som följer ett medlemskval när du använder -instruktionen With eller anger värden i initieringslistan för en typ. Överväg att bryta raden efter tilldelningsoperatorn (till exempel =) när du använder With instruktioner eller objektinitieringslistor. Till exempel:

    ' 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
    

    Mer information finns i Med... Avsluta med instruktion eller objektinitierare: Namngivna och anonyma typer.

  • Efter en EGENSKAPskvalificerare för XML-axeln (. eller .@...). Du måste dock inkludera ett radfortsättningstecken (_) när du anger en medlemskvalificerare när du använder nyckelordet With . Till exempel:

    Dim customerName = customerXml.
      <Name>.Value
    
    Dim customerEmail = customerXml...
      <Email>.Value
    

    Mer information finns i EGENSKAPER för XML-axel.

  • Efter ett mindre tecken (<) eller före ett större tecken (>) när du anger ett attribut. Även efter ett större tecken (>) när du anger ett attribut. Du måste dock inkludera ett radfortsättningstecken (_) när du anger attribut på sammansättningsnivå eller modulnivå. Till exempel:

    <
    Serializable()
    >
    Public Class Customer
        Public Property Name As String
        Public Property Company As String
        Public Property Email As String
    End Class
    

    Mer information finns i Översikt över attribut.

  • Före och efter frågeoperatorer (Aggregate, Distinct, From, Group By, Group Join, Join, Let, Order By, Select, Skip, Skip While, Take, Take WhileWhere, In, Into, On, Ascendingoch Descending). Du kan inte bryta en rad mellan nyckelorden för frågeoperatorer som består av flera nyckelord (Order By, Group Join, Take Whileoch Skip While). Till exempel:

    Dim vsProcesses = From proc In
                        Process.GetProcesses
                      Where proc.MainWindowTitle.Contains("Visual Studio")
                      Select proc.ProcessName, proc.Id,
                             proc.MainWindowTitle
    

    Mer information finns i Frågor.

  • Efter nyckelordet In i en For Each instruktion. Till exempel:

    For Each p In
      vsProcesses
    
        Console.WriteLine("{0}" & vbTab & "{1}" & vbTab & "{2}",
          p.ProcessName,
          p.Id,
          p.MainWindowTitle)
    Next
    

    Mer information finns i För varje... Nästa instruktion.

  • Efter nyckelordet From i en samlingsinitierare. Till exempel:

    Dim days = New List(Of String) From
      {
       "Mo", "Tu", "We", "Th", "F", "Sa", "Su"
      }
    

    Mer information finns i Insamlingsinitierare.

Lägga till kommentarer

Källkoden är inte alltid självförklarande, inte ens för programmeraren som skrev den. För att dokumentera sin kod använder de flesta programmerare därför liberala kommentarer. Kommentarer i kod kan förklara en procedur eller en viss instruktion för alla som läser eller arbetar med den senare. Visual Basic ignorerar kommentarer under kompilering och de påverkar inte den kompilerade koden.

Kommentarsrader börjar med en apostrofer (') eller REM följt av ett blanksteg. De kan läggas till var som helst i koden, förutom i en sträng. Om du vill lägga till en kommentar i en -instruktion infogar du en apostrofer eller REM efter -instruktionen följt av kommentaren. Kommentarer kan också gå på en egen separat rad. I följande exempel visas dessa möjligheter.

' 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.

Kontrollera kompileringsfel

Om raden efter att du har angett en kodrad visas med en vågig blå understrykning (ett felmeddelande kan också visas) finns det ett syntaxfel i -instruktionen. Du måste ta reda på vad som är fel med -instruktionen (genom att titta i uppgiftslistan eller hovra över felet med muspekaren och läsa felmeddelandet) och korrigera det. Tills du har åtgärdat alla syntaxfel i koden kan programmet inte kompileras korrekt.

Period Definition
Tilldelningsoperatorer Innehåller länkar till språkreferenssidor som omfattar tilldelningsoperatorer som =, *=och &=.
Operatorer och uttryck Visar hur du kombinerar element med operatorer för att ge nya värden.
Så här gör du: Bryt och kombinera instruktioner i kod Visar hur du delar upp en enda instruktion i flera rader och hur du placerar flera instruktioner på samma rad.
Anvisningar: Etikettinstruktioner Visar hur du etiketterar en kodrad.