Příkazy v jazyce Visual Basic

příkaz v Visual Basic je ucelenou instrukcí. 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é určovat datový typ.

  • Spustitelné příkazy, které iniciují akce. Tyto příkazy mohou volat metodu nebo funkci a mohou cykly nebo větvení prostřednictvím bloků kódu. Spustitelné příkazy zahrnují příkazy přiřazení, které přiřazují hodnotu nebo výraz proměnné nebo konstantě.

V tomto tématu jsou popsány jednotlivé kategorie. Toto téma také popisuje, jak zkombinovat více příkazů na jednom řádku a jak pokračovat v příkazu nad více řádky.

Příkazy deklarace

Příkazy deklarace můžete použít k pojmenování a definování procedur, proměnných, vlastností, polí a konstant. Při deklaraci programovacího prvku můžete také definovat jeho datový typ, úroveň přístupu a rozsah. Další informace naleznete v tématu deklarované charakteristiky 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. Spolu s odpovídajícím End Sub prohlášením deklaruje proceduru s názvem applyFormat . Určuje také to applyFormat Public , což znamená, že může volat libovolný kód, který na něj může odkazovat.

Druhá deklarace je Const příkaz, který deklaruje konstantu limit Integer a určuje 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, která bude mít jakýkoli základní datový typ nebo jakýkoli typ objektu, který je zveřejněn v aplikaci, kterou používáte.

Počáteční hodnoty

při spuštění kódu obsahujícího příkaz deklarace Visual Basic vyhrazuje paměť potřebnou pro deklarovaný element. pokud element obsahuje hodnotu, Visual Basic ji inicializuje na výchozí hodnotu pro svůj datový typ. Další informace naleznete v tématu "Behavior" v příkazu Dim.

Můžete přiřadit počáteční hodnotu proměnné jako součást její deklarace, jak ukazuje následující příklad.

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 své třídy při jejím deklaraci pomocí klíčového slova New operátor , jak ukazuje následující příklad.

Dim f As New System.Windows.Forms.Form()

Všimněte si, že počáteční hodnota, kterou zadáte v příkazu deklarace, není přiřazena proměnné, dokud spuštění nedosáhne příkazu deklarace. Do této doby proměnná obsahuje výchozí hodnotu pro svůj datový typ.

Spustitelné příkazy

Spustitelný příkaz provede akci. Může zavolat proceduru, větvení na jiné místo v kódu, projít několik příkazů nebo vyhodnotit výraz. Příkaz přiřazení je zvláštní případ spustitelného příkazu.

Následující příklad používá If...Then...Else strukturu ovládacího prvku ke spouštění různých bloků kódu na základě hodnoty proměnné. V rámci každého bloku kódu For...Next cyklus spouští 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

IfPříkaz v předchozím příkladu kontroluje hodnotu parametru clockwise . Pokud je hodnota True , volá spinClockwise metodu aWidget . Pokud je hodnota False , volá spinCounterClockwise metodu aWidget . If...Then...ElseStruktura ovládacího prvku končí na End If .

For...NextSmyčka v rámci každého bloku volá odpovídající metodu tolikrát, kolikrát se rovná hodnotě revolutions parametru.

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 jejich uložení v elementu vlevo, jako v následujícím příkladu.

v = 42

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

Oprávněné programovací prvky

Programovací element na levé straně operátoru přiřazení musí být schopný přijmout a uložit hodnotu. To znamená, že musí být proměnná nebo vlastnost, která není jen pro čtení, nebo musí být prvkem pole. V kontextu příkazu přiřazení se takový prvek někdy označuje jako l-hodnota, například "hodnota" Left.

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

x = y + z + FindResult(3)

Předchozí příklad přidá hodnotu drženou v proměnné y do hodnoty uložené v proměnné z a poté 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 operátor přiřazení může také přiřadit String hodnoty, jak ukazuje následující příklad.

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

Můžete také přiřadit Boolean hodnoty pomocí Boolean literálu nebo Boolean výrazu, jak ukazuje následující příklad.

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 příslušné hodnoty programovým prvkům Char , Date nebo Object datovým typem. Instanci objektu lze také přiřadit elementu, který je deklarován jako třída, ze které je vytvořena instance.

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

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

n += 1

Předchozí příklad přidá 1 k hodnotě n a pak uloží tuto novou hodnotu do n . Jedná se o zkrácený ekvivalent 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 těchto operátorech naleznete v tématu operátory přiřazení.

Operátor přiřazení zřetězení ( &= ) je vhodný 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, který je vhodný pro daný cílový element. Obecně byste se měli pokusit vygenerovat hodnotu stejného datového typu jako cílový element. Některé typy však lze v průběhu přiřazení převést na jiné typy.

Informace o převodu mezi datovými typy naleznete v tématu převody typu v Visual Basic. v krátkém Visual Basic automaticky převede hodnotu daného typu na jiný typ, na který se rozšíří. Rozšiřující převod je jeden v, který se vždy zdaří za běhu a neztratí žádná data. například Visual Basic převede Integer hodnotu na Double , pokud je to vhodné, protože se Integer rozšíří na Double . Další informace najdete v tématu rozšiřování a zúžení převodů.

Zúžení převodů (těch, které nejsou rozšiřující) mají riziko selhání za běhu nebo ztrátu dat. Můžete provést zužující převod explicitně pomocí funkce pro převod typu nebo můžete kompilátor nasměrovat tak, aby se všechny převody implicitně prováděly nastavením Option Strict Off . Další informace naleznete v tématu implicitní a explicitní převody.

Vložení více příkazů na jeden řádek

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

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

V některých případech je to možné, že tato forma syntaxe má těžko čitelný a udržovatelný kód. Proto se doporučuje uchovávat jeden příkaz na řádek.

Pokračování příkazu nad více řádky

Příkaz se obvykle vejde na jeden řádek, ale pokud je příliš dlouhý, můžete pokračovat na další řádek pomocí sekvence pokračování řádku, která je tvořena mezerou následovanou znakem podtržítka ( _ ) následovaným návratem na začátek řádku. V následujícím příkladu se MsgBox spustitelný příkaz pokračuje 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 v příkazu na dalším po sobě jdoucích řádcích bez použití podtržítka ( _ ). Následující elementy syntaxe implicitně pokračují v příkazu na dalším řádku kódu.

  • Za čárkou ( , ). Napří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
    
  • Po otevírací závorce ( ( ) nebo před pravou závorku ( ) ). Například:

    Dim username = GetUsername(
        Security.Principal.WindowsIdentity.GetCurrent().Name,
        CChar("\"),
        1
      )
    
  • Za levou složenou závorku ( { ) nebo před pravou složenou závorkou ( } ). Napří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í vloženého výrazu ( <%= ) nebo před ukončením vloženého výrazu ( %> ) v rámci literálu XML. Například:

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

    Další informace najdete v tématu vložené výrazy v XML.

  • Po operátoru zřetězení ( & ). Například:

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

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

  • Po operátorech přiřazení ( = , , , , , , , , &= , , := += -= *= /= \= ^= <<= >>= ). Například:

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

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

  • Po binárních operátorech ( + , , , , , , , , - , , / , , , , * , , Mod , ) <> < > <= >= ve ^ >> << And AndAlso Or OrElse Like Xor výrazu. Například:

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

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

  • Za Is operátory IsNot a . Například:

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

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

  • Za znakem kvalifikátoru členu ( ) a . před názvem členu. Například:

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

    Při použití příkazu nebo zadání hodnot v inicializačním seznamu pro typ však musíte za znak kvalifikátoru členu zahrnout znak pokračování řádku ( _ With ). Pokud používáte příkazy nebo seznamy inicializace objektů, zvažte porušení řádku za operátorem přiřazení (například = With ). Napří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 najdete v tématu s... Konče příkazem nebo inicializátory objektů: Pojmenovanéa anonymní typy .

  • Kvalifikátor vlastností osy XML ( . .@ nebo ... ). Při zadávání kvalifikátoru členu při použití klíčového slova je však nutné zahrnout znak pokračování řádku ( _ With ). Například:

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

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

  • Po znaku menší než (<) nebo před znaménkem větší než ( ) při > zadání atributu. Také po znaku větší než ( > ) při zadání atributu. Je však nutné zahrnout znak pokračování řádku ( ) při zadávání atributů na úrovni sestavení nebo _ na úrovni modulu. Napří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 před a po ( Aggregate , , , , , , , , , Distinct , , From , , , Group By , , , Group Join , , Join Let Order By Select a Skip Skip While Take Take While Where In Into On Ascending Descending ). Nelze rozdělit řádek mezi klíčová slova operátorů dotazu, které jsou tvořeny několika klíčovými slovy ( Order By , Group Join , a Take While Skip While ). Napří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.

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

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

    Další informace najdete v tématu For Each... Next – příkaz.

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

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

    Další informace najdete v tématu Inicializátory kolekcí.

Přidání komentářů

Zdrojový kód není vždy srozumitelný ani programátorovi, který ho napsal. Většina programátorů proto pomáhá dokumentovat kód pomocí vložených komentářů. Komentáře v kódu mohou vysvětlit postup nebo určitou instrukci komukoli, kdo ho později čte nebo s ním pracuje. Visual Basic kompilace komentáře ignorují a nemají vliv na zkompilovaný kód.

Řádky komentáře začínají apostrofem ( ) nebo ' REM následované mezerou. Je možné je přidat kdekoli v kódu s výjimkou řetězce. Pokud chcete k příkazu připojit komentář, vložte apostrof nebo za příkaz REM následovaný komentářem. Komentáře mohou také vlastnit samostatný řádek. 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 vlnovkou modrého podtržení (může se zobrazit i chybová zpráva), příkaz obsahuje chybu syntaxe. Musíte zjistit, co je s příkazem špatně (zobrazením seznamu úloh nebo najetím ukazatele myši na chybu a přečtením chybové zprávy) a opravit ji. Dokud v kódu nezopravili všechny chyby syntaxe, program se nepodaří správně zkompilovat.

Pojem Definice
Operátory přiřazení Poskytuje odkazy na stránky referenčních jazyků pokrývající operátory = přiřazení, jako jsou *= , a &= .
Operátory a výrazy Ukazuje, jak kombinovat prvky s operátory, aby se vnesly nové hodnoty.
Postupy: Přerušení a kombinování 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.