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 True
hodnota , volá metodu spinClockwise
aWidget
. Pokud je False
hodnota , volá metodu spinCounterClockwise
aWidget
. Ří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é z
a 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
, Date
nebo 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ě n
a 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
>>
OrElse
Like
*
<
Xor
Mod
>
<=
^
) 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áteWith
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éhoWith
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 By
Group Join
Join
From
,Let
, ,Order By
,Select
, ,Skip
,Skip While
,Where
In
Take
Take While
,On
Into
Ascending
a ).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 While
aSkip 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 slovemFor 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.
Související oddíly
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. |