Megosztás a következőn keresztül:


Utasítások a Visual Basicben

A Visual Basic utasítása teljes utasítás. Kulcsszavakat, operátorokat, változókat, állandókat és kifejezéseket tartalmazhat. Minden utasítás a következő kategóriák egyikéhez tartozik:

  • Deklarációs utasítások, amelyek változót, állandót vagy eljárást neveznek el, és adattípust is megadhatnak.

  • Végrehajtható utasítások, amelyek műveleteket kezdeményeznek. Ezek az utasítások meghívhatnak egy metódust vagy függvényt, és kódblokkokon keresztül hurkolhatnak vagy elágazhatnak. A végrehajtható utasítások közé tartoznak a hozzárendelési utasítások, amelyek egy értéket vagy kifejezést rendelnek hozzá egy változóhoz vagy állandóhoz.

Ez a témakör az egyes kategóriákat ismerteti. Ez a témakör azt is ismerteti, hogyan kombinálhat több utasítást egy sorban, és hogyan folytathatja az utasítást több sorban.

Deklarációs utasítások

Deklarációs utasítások használatával nevezheti el és határozhatja meg az eljárásokat, a változókat, a tulajdonságokat, a tömböket és az állandókat. Programozási elem deklarálásakor megadhatja annak adattípusát, hozzáférési szintjét és hatókörét is. További információ: Deklarált elemjellemzők.

Az alábbi példa három deklarációt tartalmaz.

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

Az első deklaráció a Sub nyilatkozat. A megfelelő End Sub utasítással együtt deklarál egy eljárást applyFormat. Azt is megadja, hogy applyFormat ez az Public, ami azt jelenti, hogy minden olyan kód, amely hivatkozhat rá, meghívhatja.

A második deklaráció a Const konstanst limitdeklaráló utasítás, amely megadja az adattípust és a Integer 33-at.

A harmadik deklaráció az utasítás Dim , amely deklarálja a változót thisWidget. Az adattípus egy adott objektum, nevezetesen az osztályból Widget létrehozott objektum. A változók bármilyen elemi adattípusúnak vagy bármilyen objektumtípusnak deklarálhatók, amelyek a használt alkalmazásban vannak közzétéve.

Kezdeti értékek

A deklarációs utasítást tartalmazó kód futtatásakor a Visual Basic lefoglalja a deklarált elemhez szükséges memóriát. Ha az elem tartalmaz egy értéket, a Visual Basic inicializálja azt az adattípus alapértelmezett értékére. További információ: "Viselkedés" a Dim Utasításban.

A kezdeti értéket a deklaráció részeként rendelheti hozzá egy változóhoz, ahogyan az az alábbi példában is látható.

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

Ha egy változó objektumváltozó, explicit módon létrehozhat egy példányt annak osztályából, amikor az Új operátor kulcsszóval deklarálja azt, ahogyan az alábbi példa is mutatja.

Dim f As New FileInfo("filename")

Vegye figyelembe, hogy a deklarációs utasításban megadott kezdeti érték nem lesz hozzárendelve egy változóhoz, amíg a végrehajtás el nem éri a deklarációs utasítást. Addig a változó tartalmazza az adattípus alapértelmezett értékét.

Végrehajtható utasítások

Egy végrehajtható utasítás végrehajt egy műveletet. Meghívhat egy eljárást, elágaztathat a kód egy másik helyére, több utasításon keresztül hurkolhat, vagy kiértékelhet egy kifejezést. A hozzárendelési utasítás egy végrehajtható utasítás különleges esete.

Az alábbi példa egy If...Then...Else vezérlőstruktúra használatával futtat különböző kódblokkokat egy változó értéke alapján. Minden kódblokkon belül egy For...Next hurok meghatározott számú alkalommal fut.

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

Az If előző példában szereplő utasítás ellenőrzi a paraméter clockwiseértékét. Ha az érték az True, meghívja a spinClockwise metódust aWidget. Ha az érték az False, meghívja a spinCounterClockwise metódust aWidget. A If...Then...Else vezérlőstruktúra a következővel End Ifvégződik: .

Az For...Next egyes blokkok hurokja a megfelelő metódust a paraméter értékével revolutions egyenlő számú alkalommal hívja meg.

Hozzárendelési utasítások

A hozzárendelési utasítások hozzárendelési műveleteket végeznek, amelyek a hozzárendelési operátor (=) jobb oldalán lévő érték felvételéből és a bal oldali elemben való tárolásából állnak, ahogyan az alábbi példában is látható.

v = 42

Az előző példában a hozzárendelési utasítás a 42 literális értéket tárolja a változóban v.

Jogosult programozási elemek

A hozzárendelés-operátor bal oldalán lévő programozási elemnek képesnek kell lennie egy érték elfogadására és tárolására. Ez azt jelenti, hogy olyan változónak vagy tulajdonságnak kell lennie, amely nem ReadOnly, vagy tömbelemnek kell lennie. A hozzárendelési utasítás kontextusában az ilyen elemet néha lvalue-nek is nevezik a "bal oldali érték" kifejezéshez.

A hozzárendelési operátor jobb oldalán lévő értéket egy kifejezés hozza létre, amely konstansok, állandók, változók, tulajdonságok, tömbelemek, egyéb kifejezések vagy függvényhívások bármilyen kombinációjából állhat. Az alábbi példa ezt szemlélteti.

x = y + z + FindResult(3)

Az előző példa hozzáadja a változóban y tárolt értéket a változóban ztárolt értékhez, majd hozzáadja a függvény findResulthívása által visszaadott értéket. A kifejezés teljes értéke ezután változóban xlesz tárolva.

Adattípusok a hozzárendelési utasításokban

A numerikus értékek mellett a hozzárendelési operátor is hozzárendelhet String értékeket, ahogy azt az alábbi példa is szemlélteti.

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

Az értékeket literál vagy Boolean kifejezés használatával Boolean is hozzárendelhetiBoolean, ahogy az alábbi példa is szemlélteti.

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.

Hasonlóképpen a megfelelő értékeket is hozzárendelheti a Char, Datevagy Object adattípus programozási elemeihez. Objektumpéldányt is hozzárendelhet ahhoz az osztályhoz, amelyből a példány létrejön.

Összetett hozzárendelési utasítások

Az összetett hozzárendelési utasítások először műveletet hajtanak végre egy kifejezésen, mielőtt egy programozási elemhez rendelik. Az alábbi példa az egyik operátort szemlélteti, +=amely az operátor bal oldalán lévő változó értékét a jobb oldali kifejezés értékével növeli.

n += 1

Az előző példa 1-et ad hozzá az értékhezn, majd tárolja az új értéket.n Ez a következő utasítás rövidített megfelelője:

n = n + 1

Különböző összetett hozzárendelési műveletek végezhetők ilyen típusú operátorokkal. Ezeknek az operátoroknak a listájáért és további információkért tekintse meg a Hozzárendelési operátorok című témakört.

Az összefűzés-hozzárendelés operátor (&=) akkor hasznos, ha sztringet ad hozzá a már meglévő sztringek végéhez, ahogy az alábbi példa is mutatja.

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

Típuskonverziók a hozzárendelési utasításokban

A változóhoz, tulajdonsághoz vagy tömbelemhez hozzárendelt értéknek az adott célelemnek megfelelő adattípusnak kell lennie. Általában a célelem értékével megegyező adattípusú értéket kell létrehoznia. Egyes típusok azonban más típussá alakíthatók a hozzárendelés során.

Az adattípusok közötti konvertálásról további információt a Visual Basic típuskonverziói című témakörben talál. Röviden: a Visual Basic automatikusan konvertál egy adott típusú értéket bármely más típussá, amelyre kitér. A szélesítő átalakítás olyan, amely futásidőben mindig sikeres, és nem veszt el adatokat. A Visual Basic például adott esetben átalakít egy Integer értéket Double , mert Integer az érték a következőre Doubleszélesedik: . További információkért lásd a konverziók kibővítését és szűkítését ismertető témakört.

A szűkülő konverziók (amelyek nem szélesednek) futásidőben meghibásodás vagy adatvesztés kockázatát hordozzák magukban. A szűkítő konverziót explicit módon végezheti el egy típuskonvertálási függvény használatával, vagy a fordítót implicit módon is végrehajthatja a beállítással Option Strict Off. További információ: Implicit és Explicit konverziók.

Több utasítás elhelyezése egy sorban

Egyetlen sorban több utasítást is megadhat a kettőspont (:) karakterrel elválasztva. Az alábbi példa ezt szemlélteti.

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

Bár időnként kényelmes, a szintaxis ezen formája megnehezíti a kód olvasását és karbantartását. Ezért javasoljuk, hogy egy utasítást egy sorba tartson.

Utasítás folytatása több sorban

Az utasítás általában egy sorra illeszkedik, de ha túl hosszú, akkor a következő sorra folytathatja egy sor-folytatás sorozattal, amely egy szóközből, majd egy aláhúzásjelből (_) és egy kocsivisszajelből áll. Az alábbi példában a MsgBox végrehajtható utasítás két sorban folytatódik.

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

Implicit vonal folytatása

Sok esetben az aláhúzásjel (_aláhúzásjel) használata nélkül is folytathatja az utasítást a következő egymást követő sorban. A következő szintaxiselemek implicit módon folytatják az utasítást a következő kódsoron.

  • Vessző (,) után. Példa:

    Public Function GetUsername(ByVal username As String,
                                ByVal delimiter As Char,
                                ByVal position As Integer) As String
    
        Return username.Split(delimiter)(position)
    End Function
    
  • Nyitott zárójel (() vagy záró zárójel () előtt ()). Példa:

    Dim username = GetUsername(
        Security.Principal.WindowsIdentity.GetCurrent().Name,
        CChar("\"),
        1
      )
    
  • Nyitott kapcsos kapcsos zárójel ({) vagy záró kapcsos zárójel () előtt.} Példa:

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

    További információ: Object Initializers: Named and Anonymous Types or Collection Initializers.

  • Egy megnyitott beágyazott kifejezés (<%=) vagy egy beágyazott kifejezés (%>) bezárása után egy XML-literálon belül. Példa:

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

    További információ: Beágyazott kifejezések XML-ben.

  • Az összefűzési operátor (&) után. Példa:

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

    További információ: Operátorok listázva funkció szerint.

  • Hozzárendelési operátorok után (=, , &=, +=:=, -=, *=, \=/=, ^=, ). >>=<<= Példa:

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

    További információ: Operátorok listázva funkció szerint.

  • Bináris operátorok (+, , /-, *, Mod, <>, <, >, <=, >=, ^, >>, <<OrAndAlsoOrElseAndLike) Xorután egy kifejezésen belül. Példa:

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

    További információ: Operátorok listázva funkció szerint.

  • Az és IsNot az Is operátorok után. Példa:

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

    További információ: Operátorok listázva funkció szerint.

  • A tag minősítő karaktere (.) után és a tag neve előtt. Példa:

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

    Ha azonban az utasítást használjaWith, vagy értékeket ad meg egy típus inicializálási listájában, a tag minősítő karakterét követő sor-folytatás karaktert (_) kell tartalmaznia. Ha utasításokat vagy objektum inicializálási listákat használWith, =fontolja meg a hozzárendelési operátor utáni sortörést (például). Példa:

    ' 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
    

    További információ: With... Befejezés utasítással vagy objektum inicializálókkal: Névvel ellátott és névtelen típusok.

  • XML-tengely tulajdonság-minősítője (. vagy ....@ ) után. Ha azonban a kulcsszót használja, egy sor-folytatás karaktert (_) kell megadnia, amikor tag-minősítőt ad With meg. Példa:

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

    További információ: XML-tengely tulajdonságai.

  • Egy attribútum megadásakor kisebb előjel (<) vagy nagyobb előjel (>) után. Egy attribútum megadásakor egy nagyobb előjel (>) után is. Ha azonban szerelvényszintű vagy modulszintű attribútumokat ad meg, egy sorfolytatási karaktert (_) kell tartalmaznia. Példa:

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

    További információ: Attribútumok áttekintése.

  • Lekérdezési operátorok (Aggregate, , Distinct, From, Group By, Group Join, Join, Let, Order By, Select, SkipWhereInTake WhileSkip WhileTakeInto, On, Ascending, és ).Descending A több kulcsszóból (Order By, Group JoinTake WhileésSkip While) álló lekérdezési operátorok kulcsszavai között nem lehet vonalat bontani. Példa:

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

    További információ: Lekérdezések.

  • In A kulcsszó után egy For Each utasításban. Példa:

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

    További információ: Minden egyes... Következő utasítás.

  • From A gyűjtemény inicializálójának kulcsszója után. Példa:

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

    További információt a Gyűjtemény inicializálói című témakörben talál.

Megjegyzések hozzáadása

A forráskód nem mindig magától értetődő, még a programozónak sem, aki írta. A kód dokumentálásához ezért a programozók többsége liberálisan használja a beágyazott megjegyzéseket. A kódban szereplő megjegyzések elmagyarázhatnak egy eljárást vagy egy adott utasítást bárkinek, aki elolvassa vagy később dolgozik rajta. A Visual Basic figyelmen kívül hagyja a megjegyzéseket a fordítás során, és nem érintik a lefordított kódot.

A megjegyzéssorok egy aposztrófmal (') kezdődnek, vagy REM szóközzel kezdődnek. A kód bármely pontjára felveheti őket, kivéve egy sztringen belül. Ha megjegyzést szeretne fűzni egy utasításhoz, szúrjon be egy aposztrófot vagy REM az utasítás után, majd a megjegyzést. A megjegyzések külön sorba is léphetnek. Az alábbi példa ezeket a lehetőségeket mutatja be.

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

Fordítási hibák ellenőrzése

Ha a kódsor beírása után a vonal hullámos kék aláhúzással jelenik meg (hibaüzenet is jelenhet), az utasítás szintaxishibát jelez. Meg kell tudnia, hogy mi a probléma az utasítással (a feladatlistában való kereséssel, vagy a hiba egérmutatóval való rámutatásával és a hibaüzenet olvasásával), és ki kell javítania. Amíg nem javította a kód összes szintaxishibáját, a program nem fog megfelelően lefordítani.

Időszak Definíció
Hozzárendelési operátorok Olyan nyelvi referenciaoldalakra mutató hivatkozásokat tartalmaz, amelyek a hozzárendelési operátorokra, például =az , *=és &=a .
Operátorok és kifejezések Bemutatja, hogyan kombinálhatja az elemeket operátorokkal új értékek létrehozásához.
Útmutató: Utasítások megszakítása és egyesítése a Kódban Bemutatja, hogyan lehet egyetlen utasítást több sorra bontani, és hogyan helyezhet el több utasítást ugyanazon a sorban.
Útmutató: Felirati utasítások Bemutatja, hogyan címkézhet meg egy kódsort.