Sdílet prostřednictvím


Příkazy v jazyce Visual Basic

Příkaz v jazyce Visual Basic je kompletní instrukce. Může obsahovat klíčová slova, operátory, proměnné, konstanty a výrazy. Každý příkaz patří do jedné z následujících kategorií:

  • Příkazy deklarace, které pojmenují proměnnou, konstantu nebo proceduru, a mohou také zadat datový typ.

  • Spustitelné příkazy, které inicializuje akce. Tyto příkazy mohou volat metodu nebo funkci a můžou smyčku nebo větvet prostřednictvím bloků kódu. Spustitelné příkazy zahrnují příkazy Assignment, které přiřazují hodnotu nebo výraz proměnné nebo konstantě.

Toto téma popisuje každou kategorii. Toto téma také popisuje, jak kombinovat více příkazů na jednom řádku a jak pokračovat v příkazu přes více řádků.

Příkazy deklarace

Příkazy deklarace slouží k pojmenování a definování procedur, proměnných, vlastností, polí a konstant. Když deklarujete programovací prvek, můžete také definovat jeho datový typ, úroveň přístupu a obor. Další informace naleznete v tématu Deklarované vlastnosti elementu.

Následující příklad obsahuje tři deklarace.

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

První deklarace je Sub příkaz. Společně s odpovídajícím End Sub příkazem deklaruje proceduru s názvem applyFormat. Také určuje, že applyFormat je Public, což znamená, že jakýkoli kód, který na něj může odkazovat, může volat.

Druhá deklarace je Const příkaz, který deklaruje konstantu limit, určující Integer datový typ a hodnotu 33.

Třetí deklarace je Dim příkaz, který deklaruje proměnnou thisWidget. Datový typ je konkrétní objekt, konkrétně objekt vytvořený z Widget třídy. Můžete deklarovat proměnnou libovolného základního datového typu nebo libovolného typu objektu, který je vystavený v aplikaci, kterou používáte.

Počáteční hodnoty

Když se spustí kód obsahující příkaz deklarace, jazyk Visual Basic si vyhrazuje paměť potřebnou pro deklarovaný prvek. Pokud element obsahuje hodnotu, Visual Basic ji inicializuje na výchozí hodnotu pro jeho datový typ. Další informace naleznete v tématu Chování v příkazu Dim.

Jako součást deklarace můžete přiřadit počáteční hodnotu proměnné, jak je znázorněno v následujícím příkladu.

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

Pokud je proměnná objektovou proměnnou, můžete explicitně vytvořit instanci její třídy, když ji deklarujete pomocí klíčového slova New Operator , jak je znázorněno v následujícím příkladu.

Dim f As New FileInfo("filename")

Všimněte si, že počáteční hodnota, kterou zadáte v příkazu deklarace, není přiřazena proměnné, dokud provádění nedosáhne jeho příkazu deklarace. Do té doby obsahuje proměnná výchozí hodnotu svého datového typu.

Spustitelné příkazy

Spustitelný příkaz provede akci. Může volat proceduru, větev na jiné místo v kódu, procházet několik příkazů nebo vyhodnocovat výraz. Příkaz assignment je zvláštní případ spustitelného příkazu.

Následující příklad používá If...Then...Else řídicí strukturu ke spuštění různých bloků kódu na základě hodnoty proměnné. V každém bloku kódu smyčka For...Next spustí zadaný počet opakování.

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

Příkaz If v předchozím příkladu zkontroluje hodnotu parametru clockwise. Pokud je Truehodnota , volá metodu spinClockwiseaWidget. Pokud je Falsehodnota , volá metodu spinCounterClockwiseaWidget. Řídicí If...Then...Else struktura končí na End If.

Smyčka For...Next v rámci každého bloku volá příslušnou metodu kolikrát se rovná hodnotě parametru revolutions .

Příkazy přiřazení

Příkazy přiřazení provádějí operace přiřazení, které se skládají z převzetí hodnoty na pravé straně operátoru přiřazení (=) a jeho uložení do prvku vlevo, jako v následujícím příkladu.

v = 42

V předchozím příkladu příkaz přiřazení ukládá literálovou hodnotu 42 do proměnné v.

Způsobilé programovací prvky

Programovací prvek na levé straně operátoru přiřazení musí být schopen přijmout a uložit hodnotu. To znamená, že to musí být proměnná nebo vlastnost, která není ReadOnly, nebo to musí být prvek pole. V kontextu příkazu přiřazení se takový prvek někdy označuje jako lvalue pro "levou hodnotu".

Hodnota na pravé straně operátoru přiřazení je generována výrazem, který se může skládat z jakékoli kombinace literálů, konstant, proměnných, vlastností, prvků matice, jiných výrazů nebo volání funkce. Toto dokládá následující příklad.

x = y + z + FindResult(3)

Předchozí příklad přidá hodnotu uloženou v proměnné y k hodnotě uchovávané v proměnné za pak přidá hodnotu vrácenou voláním funkce findResult. Celková hodnota tohoto výrazu je pak uložena v proměnné x.

Datové typy v příkazech přiřazení

Kromě číselných hodnot může operátor přiřazení také přiřadit String hodnoty, jak je znázorněno v následujícím příkladu.

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

Hodnoty můžete také přiřadit Boolean pomocí literálu Boolean nebo výrazu Boolean , jak je znázorněno v následujícím příkladu.

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.

Podobně můžete přiřadit odpovídající hodnoty programovacím prvkům Char, Datenebo Object datového typu. Můžete také přiřadit instanci objektu k elementu deklarovanému jako třída, ze které je tato instance vytvořena.

Složené příkazy přiřazení

Složené příkazy přiřazení nejprve provádějí operaci výrazu před přiřazením k programovacímu prvku. Následující příklad znázorňuje jeden z těchto operátorů, +=který zvýší hodnotu proměnné na levé straně operátoru hodnotou výrazu vpravo.

n += 1

Předchozí příklad přidá 1 k hodnotě na pak uloží novou hodnotu do n. Je to zkratka následujícího příkazu:

n = n + 1

Pomocí operátorů tohoto typu lze provádět různé operace složeného přiřazení. Seznam těchto operátorů a další informace o nich najdete v tématu Operátory přiřazení.

Operátor přiřazení zřetězení (&=) je užitečný pro přidání řetězce na konec již existujících řetězců, jak ukazuje následující příklad.

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

Převody typů v příkazech přiřazení

Hodnota, kterou přiřadíte proměnné, vlastnosti nebo prvku pole, musí být datového typu odpovídající danému cílovému prvku. Obecně byste se měli pokusit vygenerovat hodnotu stejného datového typu jako cílový prvek. Některé typy však lze během přiřazení převést na jiné typy.

Informace o převodu mezi datovými typy naleznete v tématu Převody typů v jazyce Visual Basic. Stručně řečeno, Visual Basic automaticky převede hodnotu daného typu na jakýkoli jiný typ, na který se rozšiřuje. Rozšiřující převod je takový, který vždy proběhne úspěšně za běhu a nepřijde o žádná data. Například Visual Basic převede Integer hodnotu na Double v případě potřeby, protože Integer se rozšiřuje na Double. Další informace naleznete v tématu Rozšíření a zužování převodů.

Zužování převodů (těch, které nejsou rozšiřující) představují riziko selhání za běhu nebo ztráty dat. Zúžení převodu můžete provést explicitně pomocí funkce převodu typu, nebo můžete kompilátor nasměrovat na provedení všech převodů implicitně nastavením Option Strict Off. Další informace naleznete v tématu Implicitní a explicitní převody.

Umístění více příkazů na jeden řádek

Na jednom řádku odděleném dvojtečkam (:) znakem můžete mít více příkazů. Toto dokládá následující příklad.

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

I když je tato forma syntaxe příležitostně pohodlná, ztěžuje čtení a údržbu kódu. Proto doporučujeme ponechat jeden příkaz na řádek.

Pokračování příkazu přes více řádků

Příkaz obvykle zapadá na jeden řádek, ale pokud je příliš dlouhý, můžete ho pokračovat na další řádek pomocí sekvence pokračování řádku, která se skládá z mezery následované znakem podtržítka (_) následovaným návratem na začátek řádku. V následujícím příkladu MsgBox pokračuje spustitelný příkaz přes dva řádky.

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

Implicitní pokračování řádku

V mnoha případech můžete pokračovat příkazem na dalším po sobě jdoucím řádku bez použití znaku podtržítka (_). Následující prvky syntaxe implicitně pokračovat příkaz na dalším řádku kódu.

  • Za čárkou (,). Příklad:

    Public Function GetUsername(ByVal username As String,
                                ByVal delimiter As Char,
                                ByVal position As Integer) As String
    
        Return username.Split(delimiter)(position)
    End Function
    
  • Za levou závorkou (() nebo před pravou závorkou ()). Příklad:

    Dim username = GetUsername(
        Security.Principal.WindowsIdentity.GetCurrent().Name,
        CChar("\"),
        1
      )
    
  • Po otevřené složené závorce ({) nebo před pravou složenou složenou závorkou (}). Příklad:

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

    Další informace naleznete v tématu Inicializátory objektů: pojmenované a anonymní typy nebo inicializátory kolekce.

  • Po otevřeném vloženém výrazu (<%=) nebo před uzavřením vloženého výrazu (%>) v literálu XML. Příklad:

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

    Další informace naleznete v tématu Vložené výrazy v JAZYCE XML.

  • Za operátorem zřetězení (&). Příklad:

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

    Další informace naleznete v tématu Operátory uvedené podle funkcí.

  • Operátory přiřazení (=, &=, :=, +=, -=/=*=, \=^=, ). >>=<<= Příklad:

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

    Další informace naleznete v tématu Operátory uvedené podle funkcí.

  • Za binárními operátory (+, -, /, <>Or>=And<<AndAlso>>OrElseLike*<XorMod><=^) ve výrazu. Příklad:

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

    Další informace naleznete v tématu Operátory uvedené podle funkcí.

  • Za operátory a IsNot operátoryIs. Příklad:

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

    Další informace naleznete v tématu Operátory uvedené podle funkcí.

  • Po znaku kvalifikátoru člena (.) a před názvem člena. Příklad:

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

    Pokud však používáte With příkaz nebo zadáváte hodnoty v seznamu inicializace pro určitý typ, musíte za znakem kvalifikátoru člena zahrnout znak pokračování řádku (_). Pokud používáte With příkazy nebo seznamy inicializace objektů, =zvažte přerušení řádku za operátorem přiřazení (například). Příklad:

    ' 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
    

    Další informace naleznete v tématu s... End With – příkaz nebo inicializátory objektů: Pojmenované a anonymní typy

  • Za kvalifikátorem vlastnosti osy XML (. nebo .@...). Pokud však zadáte kvalifikátor člena při použití klíčového With slova, musíte zahrnout znak pokračování řádku (_). Příklad:

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

    Další informace naleznete v tématu Vlastnosti osy XML.

  • Za znaménkem menší než (<) nebo před znakem větší než (>) při zadání atributu. Také za znaménkem větší než (>) při zadání atributu. Pokud však zadáte atributy na úrovni sestavení nebo modulu, musíte zahrnout znak pokračování řádku (_). Příklad:

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

    Další informace najdete v tématu Přehled atributů.

  • Operátory dotazu (Aggregate, Distinct, Group ByGroup JoinJoinFrom, Let, , Order By, Select, , Skip, Skip While, WhereInTakeTake While, OnIntoAscendinga ).Descending Nelze přerušit čáru mezi klíčovými slovy operátorů dotazu, které jsou tvořeny více klíčovými slovy (Order By, Group Join, Take Whilea Skip While). Příklad:

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

    Další informace najdete v tématu Dotazy.

  • In Za klíčovým slovem For Each v příkazu. Příklad:

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

    Další informace naleznete v tématu Pro každý... Next – příkaz.

  • From Za klíčovým slovem v inicializátoru kolekce. Příklad:

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

    Další informace naleznete v tématu Inicializátory kolekce.

Přidávání komentářů

Zdrojový kód není vždy vysvětlovat, ani programátorovi, který ho napsal. Aby bylo možné dokumentovat kód, proto většina programátorů využívá vložené komentáře. Komentáře v kódu můžou vysvětlit postup nebo konkrétní instrukce komukoli, kdo ho později čte nebo pracuje s ním. Visual Basic ignoruje komentáře během kompilace a nemají vliv na zkompilovaný kód.

Řádky komentáře začínají apostrofem (') nebo REM mezerou. Dají se přidat kdekoli v kódu s výjimkou řetězce. Pokud chcete k příkazu přidat komentář, vložte apostrof nebo REM za příkaz následovaný komentářem. Komentáře můžou být také na samostatném řádku. Následující příklad ukazuje tyto možnosti.

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

Kontrola chyb kompilace

Pokud se po zadání řádku kódu zobrazí řádek s modrým podtržením vlnovkou (může se zobrazit i chybová zpráva), v příkazu se zobrazí syntaktická chyba. Musíte zjistit, co je s příkazem špatně (tak, že se podíváte do seznamu úkolů nebo najedete myší na chybu ukazatelem myši a přečtete chybovou zprávu) a opravíte ji. Dokud v kódu neopravíte všechny chyby syntaxe, program se nepodaří správně zkompilovat.

Pojem definice
Operátory přiřazení Poskytuje odkazy na referenční stránky jazyka, které pokrývají operátory přiřazení, jako =je , *=a &=.
Operátory a výrazy Ukazuje, jak kombinovat prvky s operátory pro získání nových hodnot.
Postupy: Přerušení a kombinace příkazů v kódu Ukazuje, jak rozdělit jeden příkaz na více řádků a jak umístit více příkazů na stejný řádek.
Postupy: Vytváření popisků příkazů Ukazuje, jak označit řádek kódu.