Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Instrukcja w Visual Basic jest kompletną instrukcją. Może zawierać słowa kluczowe, operatory, zmienne, stałe i wyrażenia. Każde stwierdzenie należy do jednej z następujących kategorii:
Instrukcje deklaracji, które nazywają zmienną, stałą lub procedurę, a także mogą określać typ danych.
Instrukcje wykonywalne, które inicjują akcje. Te instrukcje mogą wywoływać metodę lub funkcję i mogą tworzyć pętle lub rozgałęziać się w blokach 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 deklaracyjne
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 wyrażenie Sub
. Wraz z instrukcją dopasowania End Sub
deklaruje procedurę o nazwie applyFormat
. Określa również, że applyFormat
jest Public
, 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, a mianowicie obiektem utworzonym z klasy Widget
. 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
obiektu aWidget
. Jeśli wartość to False
, wywołuje metodę spinCounterClockwise
obiektu aWidget
. Struktura sterująca If...Then...Else
kończy się elementem 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 stałą wartość 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 określany jako 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. Poniższy przykład ilustruje to.
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 przypisać wartości dla Boolean
, używając literału Boolean
lub wyrażenia Boolean
, jak ilustruje poniższy przykład.
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 elementom programowania typu Char
, Date
lub Object
danych. Można również przypisać wystąpienie obiektu do elementu zadeklarowanego jako należący do klasy, z której to wystąpienie zostało utworzone.
Złożone przypisania
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 konkatenacji (&=
) jest przydatny do dodawania ciągu znaków na końcu istniejących już ciągów znakó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 (:
). Poniższy przykład ilustruje to.
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 wypowiedzi na wiersz.
Kontynuowanie oświadczenia 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 MsgBox
jest kontynuowana 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ć wyrażenie w następnym wierszu bez użycia znaku podkreślenia (_
). Następujące elementy składni niejawnie kontynuują instrukcję w następnym wierszu kodu.
Po przecince (
,
). 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 ()
). Przykład:Dim username = GetUsername( Security.Principal.WindowsIdentity.GetCurrent().Name, CChar("\"), 1 )
Po otwartym nawiasie klamrowym (
{
) lub przed zamykającym nawiasem klamrowym (}
). 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. 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 (
&
). 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 (
=
,&=
,:=
,+=
,-=
,*=
,/=
,\=
,^=
,<<=
,>>=
). Przykład:Dim fileStream = My.Computer.FileSystem. OpenTextFileReader(filePath)
Aby uzyskać więcej informacji, zobacz Operatory wymienione według funkcji.
Po operatorach binarnych (
+
,-
,/
,*
,Mod
,<>
,<
,>
,<=
,>=
,^
,>>
,<<
,And
,AndAlso
,Or
,OrElse
,Like
,Xor
) w wyrażeniu. 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
. 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 członkowskiego (
.
) i przed jego nazwą. Przykład:Dim fileStream = My.Computer.FileSystem. OpenTextFileReader(filePath)
Należy jednak umieścić znak kontynuacji wiersza (
_
) po znaku kwalifikatora elementu członkowskiego, gdy używasz instrukcjiWith
lub gdy podajesz wartości na liście inicjalizacji dla typu. Rozważ przerwanie wiersza po operatorze przypisania (na przykład=
) w przypadku używaniaWith
instrukcji lub list do inicjalizacji obiektów. 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 Instrukcja With...End With lub Inicjatorów Obiektów: Nazwane i Anonimowe Typy.
Po kwalifikatorze właściwości osi XML (
.
lub.@
lub...
). Należy jednak dołączyć znak kontynuacji wiersza (_
) podczas określania kwalifikatora składowego, gdy używasz słowa kluczowegoWith
. 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 mniejszym "<" lub przed znakiem większym "
>
", gdy określasz atrybut. 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. 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 i po operatorami zapytań (
Aggregate
,Distinct
,From
,Group By
,Group Join
,Join
,Let
,Order By
,Select
,Skip
,Skip While
,Take
,Take While
,Where
,In
,Into
,On
,Ascending
, iDescending
). 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
). 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 kluczowym słowie
In
w instrukcjiFor Each
. 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 Instrukcja For Each...Next.
Po kluczowym słowie
From
w inicjatorze kolekcji. 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 swobodnie używa komentarzy wbudowanych. 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
i po nich następuje spacja. 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śleniem (może również pojawić się komunikat o błędzie), w poleceniu występuje błąd składniowy. Musisz dowiedzieć się, co jest nie tak z oświadczeniem (patrząc na liście zadań lub umieszczając wskaźnik myszy nad błędem i odczytując komunikat o błędzie) i poprawić ją. Dopóki nie usunięto wszystkich błędów składniowych w kodzie, nie będzie można poprawnie skompilować programu.
Powiązane sekcje
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: instrukcje etykiet | Pokazuje, jak oznaczyć wiersz kodu. |