Instrukcje w Visual Basic
Instrukcja w Visual Basic jest kompletną instrukcją. Może zawierać słowa kluczowe, operatory, zmienne, stałe i wyrażenia. Każda instrukcja należy do jednej z następujących kategorii:
Instrukcje deklaracji, które nazywają zmienną, stałą lub procedurą, i mogą również określać typ danych.
Instrukcje wykonywalne, które inicjują akcje. Te instrukcje mogą wywoływać metodę lub funkcję i mogą pętli lub rozgałęziać bloki kodu. Instrukcje wykonywalne obejmują instrukcje przypisania, które przypisują wartość lub wyrażenie do zmiennej lub stałej.
W tym temacie opisano każdą kategorię. Ponadto w tym temacie opisano sposób łączenia wielu instrukcji w jednym wierszu i sposobu kontynuowania instrukcji w wielu wierszach.
Instrukcje deklaracji
Instrukcje deklaracji służą do określania nazw i definiowania procedur, zmiennych, właściwości, tablic i stałych. Podczas deklarowania elementu programowania można również zdefiniować jego typ danych, poziom dostępu i zakres. Aby uzyskać więcej informacji, zobacz Zadeklarowane cechy elementów.
Poniższy przykład zawiera trzy deklaracje.
Public Sub ApplyFormat()
Const limit As Integer = 33
Dim thisWidget As New widget
' Insert code to implement the procedure.
End Sub
Pierwsza deklaracja to Sub
instrukcja . Wraz z instrukcją dopasowania End Sub
deklaruje procedurę o nazwie applyFormat
. Określa również, że jest Public
to applyFormat
, co oznacza, że każdy kod, który może się do niego odwoływać, może go wywołać.
Druga deklaracja to Const
instrukcja, która deklaruje stałą limit
, określając Integer
typ danych i wartość 33.
Trzecia deklaracja to Dim
instrukcja, która deklaruje zmienną thisWidget
. Typ danych jest określonym obiektem, czyli obiektem utworzonym Widget
na podstawie klasy. Zmienną można zadeklarować jako dowolny typ danych podstawowych lub dowolny typ obiektu uwidoczniony w używanej aplikacji.
Wartości początkowe
Po uruchomieniu kodu zawierającego instrukcję deklaracji program Visual Basic rezerwuje pamięć wymaganą dla zadeklarowanego elementu. Jeśli element przechowuje wartość, program Visual Basic inicjuje go do wartości domyślnej dla jego typu danych. Aby uzyskać więcej informacji, zobacz "Zachowanie" w instrukcji Dim.
Możesz przypisać wartość początkową do zmiennej w ramach jej deklaracji, jak pokazano w poniższym przykładzie.
Dim m As Integer = 45
' The preceding declaration creates m and assigns the value 45 to it.
Jeśli zmienna jest zmienną obiektu, możesz jawnie utworzyć wystąpienie jej klasy podczas deklarowania za pomocą słowa kluczowego Nowy operator , jak pokazano w poniższym przykładzie.
Dim f As New FileInfo("filename")
Należy pamiętać, że początkowa wartość określona w instrukcji deklaracji nie jest przypisana do zmiennej, dopóki wykonanie nie osiągnie instrukcji deklaracji. Do tego czasu zmienna zawiera wartość domyślną dla jej typu danych.
Instrukcje wykonywalne
Instrukcja wykonywalna wykonuje akcję. Może wywołać procedurę, rozgałęzić ją do innego miejsca w kodzie, wykonać pętlę za pomocą kilku instrukcji lub ocenić wyrażenie. Instrukcja przypisania jest specjalnym przypadkiem instrukcji wykonywalnej.
W poniższym przykładzie użyto struktury sterującej If...Then...Else
do uruchamiania różnych bloków kodu na podstawie wartości zmiennej. W każdym bloku kodu pętla For...Next
uruchamia określoną liczbę razy.
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
Instrukcja If
w poprzednim przykładzie sprawdza wartość parametru clockwise
. Jeśli wartość to True
, wywołuje metodę spinClockwise
aWidget
. Jeśli wartość to False
, wywołuje metodę spinCounterClockwise
aWidget
. Struktura kontrolki If...Then...Else
kończy się ciągiem End If
.
Pętla For...Next
w każdym bloku wywołuje odpowiednią metodę kilka razy równą wartości parametru revolutions
.
Instrukcje przypisania
Instrukcje przypisania wykonują operacje przypisania, które składają się z pobierania wartości po prawej stronie operatora przypisania (=
) i przechowywania jej w elemenie po lewej stronie, jak w poniższym przykładzie.
v = 42
W poprzednim przykładzie instrukcja przypisania przechowuje wartość literału 42 w zmiennej v
.
Kwalifikujące się elementy programowania
Element programowania po lewej stronie operatora przypisania musi mieć możliwość akceptowania i przechowywania wartości. Oznacza to, że musi być zmienną lub właściwością, która nie jest readOnly lub musi być elementem tablicy. W kontekście instrukcji przypisania taki element jest czasami nazywany lvalue dla "lewej wartości".
Wartość po prawej stronie operatora przypisania jest generowana przez wyrażenie, które może składać się z dowolnej kombinacji literałów, stałych, zmiennych, właściwości, elementów tablicy, innych wyrażeń lub wywołań funkcji. Ilustruje to poniższy przykład.
x = y + z + FindResult(3)
Powyższy przykład dodaje wartość przechowywaną w zmiennej do wartości przechowywanej w zmiennej y
z
, a następnie dodaje wartość zwróconą przez wywołanie funkcji findResult
. Łączna wartość tego wyrażenia jest następnie przechowywana w zmiennej x
.
Typy danych w instrukcjach przypisania
Oprócz wartości liczbowych operator przypisania może również przypisywać String
wartości, jak pokazano w poniższym przykładzie.
Dim a, b As String
a = "String variable assignment"
b = "Con" & "cat" & "enation"
' The preceding statement assigns the value "Concatenation" to b.
Można również przypisać Boolean
wartości przy użyciu Boolean
literału lub Boolean
wyrażenia, jak pokazano w poniższym przykładzie.
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.
Podobnie można przypisać odpowiednie wartości do elementów Char
programowania typu , Date
lub Object
danych. Można również przypisać wystąpienie obiektu do elementu zadeklarowanego jako klasy, z której tworzone jest to wystąpienie.
Instrukcje przypisania złożonego
Instrukcje przypisania złożonego najpierw wykonują operację na wyrażeniu przed przypisaniem go do elementu programowania. Poniższy przykład ilustruje jeden z tych operatorów, +=
który zwiększa wartość zmiennej po lewej stronie operatora przez wartość wyrażenia po prawej stronie.
n += 1
Powyższy przykład dodaje wartość 1 do wartości n
, a następnie przechowuje nową wartość w pliku n
. Jest to skrócony odpowiednik następującej instrukcji:
n = n + 1
Za pomocą operatorów tego typu można wykonywać różne operacje przypisania złożonego. Aby uzyskać listę tych operatorów i więcej informacji na ich temat, zobacz Operatory przypisania.
Operator przypisania łączenia (&=
) jest przydatny do dodawania ciągu na końcu już istniejących ciągów, jak pokazano w poniższym przykładzie.
Dim q As String = "Sample "
q &= "String"
' q now contains "Sample String".
Konwersje typów w instrukcjach przypisania
Wartość przypisana do zmiennej, właściwości lub elementu tablicy musi być typu danych odpowiedniego dla tego elementu docelowego. Ogólnie rzecz biorąc, należy spróbować wygenerować wartość tego samego typu danych co element docelowy. Jednak niektóre typy można przekonwertować na inne typy podczas przypisywania.
Aby uzyskać informacje na temat konwertowania między typami danych, zobacz Konwersje typów w Visual Basic. Krótko mówiąc, język Visual Basic automatycznie konwertuje wartość danego typu na dowolny inny typ, do którego się rozszerza. Konwersja rozszerzająca jest taka, która zawsze kończy się powodzeniem w czasie wykonywania i nie traci żadnych danych. Na przykład Visual Basic konwertuje Integer
wartość na Double
w razie potrzeby, ponieważ Integer
rozszerza wartość na Double
. Aby uzyskać więcej informacji, zobacz Rozszerzanie i zawężanie konwersji.
Zawężanie konwersji (tych, które nie rozszerzają się) niesie ze sobą ryzyko awarii w czasie wykonywania lub utraty danych. Możesz jawnie wykonać konwersję zawężającą przy użyciu funkcji konwersji typu lub skierować kompilator do wykonania wszystkich konwersji niejawnie, ustawiając wartość Option Strict Off
. Aby uzyskać więcej informacji, zobacz Niejawne i jawne konwersje.
Umieszczanie wielu instrukcji w jednym wierszu
Można mieć wiele instrukcji w jednym wierszu oddzielonym dwukropkiem (:
). Ilustruje to poniższy przykład.
Dim sampleString As String = "Hello World" : MsgBox(sampleString)
Chociaż czasami wygodna, ta forma składni sprawia, że kod jest trudny do odczytania i konserwacji. Dlatego zaleca się zachowanie jednej instrukcji w wierszu.
Kontynuowanie instrukcji w wielu wierszach
Instrukcja zwykle pasuje do jednego wiersza, ale gdy jest zbyt długa, można kontynuować ją w następnym wierszu przy użyciu sekwencji kontynuacji linii, która składa się z spacji, po której następuje znak podkreślenia (_
), po którym następuje powrót karetki. W poniższym przykładzie instrukcja wykonywalna jest kontynuowana MsgBox
w dwóch wierszach.
Public Sub DemoBox()
Dim nameVar As String
nameVar = "John"
MsgBox("Hello " & nameVar _
& ". How are you?")
End Sub
Kontynuacja niejawnej linii
W wielu przypadkach można kontynuować instrukcję w następnym kolejnym wierszu bez użycia znaku podkreślenia (_
). Następujące elementy składni niejawnie kontynuują instrukcję w następnym wierszu kodu.
Po przecince (
,
). Na przykład: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 otwartym nawiasie (
(
) lub przed nawiasem zamykającym ()
). Na przykład:Dim username = GetUsername( Security.Principal.WindowsIdentity.GetCurrent().Name, CChar("\"), 1 )
Po otwartym nawiasie klamrowym (
{
) lub przed zamykającym nawiasem klamrowym (}
). Na przykład:Dim customer = New Customer With { .Name = "Terry Adams", .Company = "Adventure Works", .Email = "terry@www.adventure-works.com" }
Aby uzyskać więcej informacji, zobacz Inicjatory obiektów: typy nazwane i anonimowe lub inicjatory kolekcji.
Po otwarciu osadzonego wyrażenia (
<%=
) lub przed zamknięciem osadzonego wyrażenia (%>
) w literału XML. Na przykład:Dim customerXml = <Customer> <Name> <%= customer.Name %> </Name> <Email> <%= customer.Email %> </Email> </Customer>
Aby uzyskać więcej informacji, zobacz Wyrażenia osadzone w języku XML.
Po operatorze łączenia (
&
). Na przykład:cmd.CommandText = "SELECT * FROM Titles JOIN Publishers " & "ON Publishers.PubId = Titles.PubID " & "WHERE Publishers.State = 'CA'"
Aby uzyskać więcej informacji, zobacz Operatory wymienione według funkcji.
Po operatorach przypisania (
=
,&=
,-=
/=
*=
\=
+=
:=
, ,^=
,<<=
, ).>>=
Na przykład:Dim fileStream = My.Computer.FileSystem. OpenTextFileReader(filePath)
Aby uzyskać więcej informacji, zobacz Operatory wymienione według funkcji.
Po operatorach binarnych (
+
,-
,Mod
Or
<=
>=
And
<<
AndAlso
>>
OrElse
Like
/
<>
Xor
*
<
>
^
) w wyrażeniu. Na przykład:Dim memoryInUse = My.Computer.Info.TotalPhysicalMemory + My.Computer.Info.TotalVirtualMemory - My.Computer.Info.AvailablePhysicalMemory - My.Computer.Info.AvailableVirtualMemory
Aby uzyskać więcej informacji, zobacz Operatory wymienione według funkcji.
Po operatorach
Is
iIsNot
. Na przykład:If TypeOf inStream Is IO.FileStream AndAlso inStream IsNot Nothing Then ReadFile(inStream) End If
Aby uzyskać więcej informacji, zobacz Operatory wymienione według funkcji.
Po znaku kwalifikatora elementu członkowskiego (
.
) i przed nazwą elementu członkowskiego. Na przykład:Dim fileStream = My.Computer.FileSystem. OpenTextFileReader(filePath)
Należy jednak dołączyć znak kontynuacji wiersza (
_
) po znaku kwalifikatora elementu członkowskiego, gdy używaszWith
instrukcji lub podajesz wartości na liście inicjalizacji dla typu. Rozważ przerwanie wiersza po operatorie przypisania (na przykład=
) w przypadku używaniaWith
instrukcji lub list inicjowania obiektów. Na przykład:' 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
Aby uzyskać więcej informacji, zobacz With... Zakończ za pomocą instrukcji lub inicjatorów obiektów: nazwane i anonimowe typy.
Po kwalifikatorze właściwości osi XML (
.
lub.@
...
). Należy jednak dołączyć znak kontynuacji wiersza (_
) podczas określania kwalifikatora składowego, gdy używasz słowa kluczowegoWith
. Na przykład:Dim customerName = customerXml. <Name>.Value Dim customerEmail = customerXml... <Email>.Value
Aby uzyskać więcej informacji, zobacz Właściwości osi XML.
Po znaku mniejszej niż (<) lub przed znakiem większym niż (
>
) podczas określania atrybutu. Również po znaku większym niż (>
) podczas określania atrybutu. Należy jednak uwzględnić znak kontynuacji wiersza (_
) podczas określania atrybutów na poziomie zestawu lub na poziomie modułu. Na przykład:< Serializable() > Public Class Customer Public Property Name As String Public Property Company As String Public Property Email As String End Class
Aby uzyskać więcej informacji, zobacz Omówienie atrybutów.
Przed operatorami zapytań i po nim (
Aggregate
,Distinct
,Join
Into
Select
Order By
Skip
Let
Skip While
Group Join
Take
Take While
Group By
From
In
On
Where
Ascending
i ).Descending
Nie można podzielić wiersza między słowami kluczowymi operatorów zapytań składających się z wielu słów kluczowych (Order By
,Group Join
,Take While
iSkip While
). Na przykład:Dim vsProcesses = From proc In Process.GetProcesses Where proc.MainWindowTitle.Contains("Visual Studio") Select proc.ProcessName, proc.Id, proc.MainWindowTitle
Aby uzyskać więcej informacji, zobacz Zapytania.
Po słowie
In
kluczowym w instrukcjiFor Each
. Na przykład:For Each p In vsProcesses Console.WriteLine("{0}" & vbTab & "{1}" & vbTab & "{2}", p.ProcessName, p.Id, p.MainWindowTitle) Next
Aby uzyskać więcej informacji, zobacz For Each... (Dla każdego... Następna instrukcja.
Po słowie
From
kluczowym w inicjatorze kolekcji. Na przykład:Dim days = New List(Of String) From { "Mo", "Tu", "We", "Th", "F", "Sa", "Su" }
Aby uzyskać więcej informacji, zobacz Inicjatory kolekcji.
Dodawanie komentarzy
Kod źródłowy nie zawsze jest objaśniający, nawet dla programisty, który go napisał. Aby ułatwić dokumentowanie kodu, większość programistów korzysta z komentarzy osadzonych. Komentarze w kodzie mogą wyjaśnić procedurę lub konkretną instrukcję każdemu, kto czyta go lub pracuje z nim później. Program Visual Basic ignoruje komentarze podczas kompilacji i nie ma wpływu na skompilowany kod.
Wiersze komentarza zaczynają się od apostrofu ('
) lub REM
spacji. Można je dodawać w dowolnym miejscu w kodzie, z wyjątkiem ciągu. Aby dołączyć komentarz do instrukcji, wstaw apostrof lub REM
po instrukcji, a następnie komentarz. Komentarze mogą również znajdować się w osobnym wierszu. W poniższym przykładzie pokazano te możliwości.
' 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.
Sprawdzanie błędów kompilacji
Jeśli po wpisaniu wiersza kodu wiersz jest wyświetlany z falistym niebieskim podkreśleniu (w instrukcji może pojawić się również komunikat o błędzie), w instrukcji występuje błąd składniowy. Musisz dowiedzieć się, co jest nie tak z instrukcją (patrząc na liście zadań lub umieszczając kursor nad wskaźnikiem myszy i odczytywaniem komunikatu o błędzie) i poprawić go. Dopóki nie usunięto wszystkich błędów składniowych w kodzie, nie będzie można poprawnie skompilować programu.
Sekcje pokrewne
Termin | Definicja |
---|---|
Operatory przypisania | Zawiera linki do stron referencyjnych języka obejmujących operatory przypisania, takie jak = , *= i &= . |
Operatory i wyrażenia | Przedstawia sposób łączenia elementów z operatorami w celu uzyskania nowych wartości. |
Instrukcje: przerywanie i łączenie instrukcji w kodzie | Pokazuje, jak podzielić pojedynczą instrukcję na wiele wierszy i jak umieścić wiele instrukcji w tym samym wierszu. |
Instrukcje: etykietowanie instrukcji | Pokazuje, jak oznaczyć wiersz kodu. |