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 True
anropas spinClockwise
metoden aWidget
. Om värdet är False
anropas 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 z
och 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 Char
datatypen , Date
eller 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 n
fö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
)Xor
i 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
ochIsNot
. 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 -instruktionenWith
eller anger värden i initieringslistan för en typ. Överväg att bryta raden efter tilldelningsoperatorn (till exempel=
) när du använderWith
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 nyckelordetWith
. 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 While
Where
,In
,Into
,On
,Ascending
ochDescending
). Du kan inte bryta en rad mellan nyckelorden för frågeoperatorer som består av flera nyckelord (Order By
,Group Join
,Take While
ochSkip 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 enFor 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.
Relaterade avsnitt
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. |