Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Инструкция в Visual Basic — это полная инструкция. Он может содержать ключевые слова, операторы, переменные, константы и выражения. Каждое утверждение принадлежит одной из следующих категорий:
Операторы объявления, которые позволяют задать переменную, константу или процедуру, и также могут определить тип данных.
Исполняемые инструкции, которые инициируют действия. Эти операторы могут вызывать метод или функцию, а также могут перебирать циклически или разветвляться через блоки кода. Исполняемые инструкции включают инструкции назначения, которые присваивают значение или выражение переменной или константе.
В этом разделе описана каждая категория. Кроме того, в этом разделе описывается объединение нескольких инструкций в одной строке и продолжение инструкции по нескольким строкам.
Инструкции объявления
Операторы объявления используются, чтобы называть и определять процедуры, переменные, свойства, массивы и константы. При объявлении элемента программирования можно также определить его тип данных, уровень доступа и область. Дополнительные сведения см. в разделе "Объявленные характеристики элементов".
В следующем примере содержатся три объявления.
Public Sub ApplyFormat()
Const limit As Integer = 33
Dim thisWidget As New widget
' Insert code to implement the procedure.
End Sub
Первое объявление — это Sub
инструкция. Вместе с соответствующим End Sub
оператором он объявляет процедуру с именем applyFormat
. Он также указывает, что applyFormat
это Public
, что означает, что любой код, который может ссылаться на него, может вызывать его.
Второе объявление — это Const
инструкция, которая объявляет константу limit
, указывая Integer
тип данных и значение 33.
Третье объявление — это Dim
инструкция, которая объявляет переменную thisWidget
. Тип данных — это конкретный объект, а именно объект, созданный из Widget
класса. Можно объявить переменную любого элементарного типа данных или любого типа объекта, который предоставляется в используемом приложении.
Начальные значения
При выполнении кода, содержащего инструкцию объявления, Visual Basic резервирует память, необходимую для объявленного элемента. Если элемент содержит значение, Visual Basic инициализирует его в значение по умолчанию для типа данных. Дополнительные сведения см. в разделе "Поведение" в инструкции Dim.
Вы можете присвоить начальное значение переменной при ее объявлении, как показано в следующем примере.
Dim m As Integer = 45
' The preceding declaration creates m and assigns the value 45 to it.
Если переменная является переменной объекта, вы можете явно создать экземпляр своего класса при объявлении его с помощью ключевого слова New Operator , как показано в следующем примере.
Dim f As New FileInfo("filename")
Обратите внимание, что начальное значение, указанное в инструкции объявления, не назначается переменной, пока выполнение не достигнет ее инструкции объявления. До этого времени переменная содержит значение по умолчанию для его типа данных.
Исполняемые инструкции
Исполняемая инструкция выполняет действие. Он может вызывать процедуру, перейти к другому месту в коде, выполнять цикл по нескольким операциям или вычислять выражение. Оператор назначения — это особый случай исполняемой инструкции.
В следующем примере используется If...Then...Else
структура управления для запуска различных блоков кода на основе значения переменной. В каждом блоке For...Next
кода цикл выполняет указанное количество раз.
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
Инструкция If
в предыдущем примере проверяет значение параметра clockwise
. Если значение равно True
, он выполнит метод spinClockwise
aWidget
. Если значение равно False
, он выполнит метод spinCounterClockwise
aWidget
. Структура If...Then...Else
управления заканчивается End If
.
Цикл For...Next
в каждом блоке вызывает соответствующий метод несколько раз, равных значению revolutions
параметра.
Инструкции назначения
Операторы присваивания выполняют операции присваивания, которые состоят из принятия значения в правой части оператора присваивания (=
) и хранения его в элементе слева, как в следующем примере.
v = 42
В предыдущем примере инструкция назначения сохраняет литеральное значение 42 в переменной v
.
Подходящие элементы программирования
Элемент программирования слева от оператора присваивания должен иметь возможность принимать и хранить значение. Это означает, что это должна быть переменная или свойство, которое не является ReadOnly, или оно должно быть элементом массива. В контексте инструкции присваивания такой элемент иногда называется lvalue, что означает "левое значение".
Значение в правой части оператора присваивания создается выражением, которое может состоять из любого сочетания литералов, констант, переменных, свойств, элементов массива, других выражений или вызовов функций. В следующем примере показано это.
x = y + z + FindResult(3)
В предыдущем примере значение в переменной y
добавляется к значению в переменной z
, а затем добавляется значение, возвращаемое вызовом функции findResult
. Затем общее значение этого выражения хранится в переменной x
.
Типы данных в инструкциях назначения
Помимо числовых значений оператор присваивания также может назначать String
значения, как показано в следующем примере.
Dim a, b As String
a = "String variable assignment"
b = "Con" & "cat" & "enation"
' The preceding statement assigns the value "Concatenation" to b.
Можно также назначать значения Boolean
, используя либо литерал Boolean
, либо выражение Boolean
, как показано в следующем примере.
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.
Аналогично, можно назначить соответствующие значения элементам программирования типа данных Char
, Date
или Object
. Можно также назначить экземпляр объекта элементу, объявленному классом, из которого создается этот экземпляр.
Составные операторы присваивания
Составные операторы присваивания сначала выполняют операцию с выражением перед назначением его элементу программирования. В следующем примере показан один из этих операторов, +=
который увеличивает значение переменной слева от оператора по значению выражения справа.
n += 1
В предыдущем примере добавляется значение 1 к значению n
, а затем сохраняется новое значение n
. Это краткий эквивалент следующей инструкции:
n = n + 1
Различные сложные операции назначения можно выполнять с помощью операторов этого типа. Список этих операторов и дополнительные сведения о них см. в разделе "Операторы назначения".
Оператор назначения объединения (&=
) полезен для добавления строки в конец уже существующих строк, как показано в следующем примере.
Dim q As String = "Sample "
q &= "String"
' q now contains "Sample String".
Преобразования типов в инструкциях назначения
Значение, присваиваемое переменной, свойству или элементу массива, должно иметь тип данных, соответствующий целевому элементу. Как правило, следует попытаться создать значение того же типа данных, что и для конечного элемента. Однако некоторые типы можно преобразовать в другие типы во время назначения.
Сведения о преобразовании между типами данных см. в разделе "Преобразования типов" в Visual Basic. Вкратце, Visual Basic автоматически преобразует значение заданного типа в любой другой тип, к которому он расширяется.
Расширяющее преобразование — это преобразование, которое всегда удачно выполняется во время выполнения и не теряет никаких данных. Например, Visual Basic преобразует значение Integer
в Double
, когда это целесообразно, потому что Integer
расширяется до Double
. Дополнительные сведения см. в разделе "Расширение и сужение преобразований".
Сужающие преобразования (те, которые не расширяются) несут риск сбоя во время выполнения или потери данных. Вы можете явно выполнить сужение преобразования с помощью функции преобразования типов или направить компилятор для выполнения всех преобразований неявно, задав параметр Option Strict Off
. Дополнительные сведения см. в разделе "Неявные и явные преобразования".
Размещение нескольких выражений в одной строке
Можно использовать несколько операторов в одной строке, разделенной символом двоеточия (:
). В следующем примере показано это.
Dim sampleString As String = "Hello World" : MsgBox(sampleString)
Хотя иногда удобно, эта форма синтаксиса затрудняет чтение и обслуживание кода. Таким образом, рекомендуется сохранить один оператор в каждой строке.
Продолжение утверждения на нескольких строках
Оператор обычно помещается в одну строку, но если он слишком длинен, его можно продолжить на следующей строке с помощью последовательности продолжения строки, которая состоит из пробела, за которым следует символ подчеркивания (_
) и перенос строки. В следующем примере исполняемая инструкция MsgBox
разбита на две строки.
Public Sub DemoBox()
Dim nameVar As String
nameVar = "John"
MsgBox("Hello " & nameVar _
& ". How are you?")
End Sub
Неявное продолжение строки
Во многих случаях можно продолжить инструкцию на следующей последовательной строке без использования символа подчеркивания (_
). Следующие элементы синтаксиса неявно продолжают инструкцию в следующей строке кода.
После запятой (
,
). Рассмотрим пример.Public Function GetUsername(ByVal username As String, ByVal delimiter As Char, ByVal position As Integer) As String Return username.Split(delimiter)(position) End Function
После открытой скобки (
(
) или перед закрывающей скобкой ()
). Рассмотрим пример.Dim username = GetUsername( Security.Principal.WindowsIdentity.GetCurrent().Name, CChar("\"), 1 )
После открытой фигурной скобки (
{
) или перед закрывающей фигурной скобкой (}
). Рассмотрим пример.Dim customer = New Customer With { .Name = "Terry Adams", .Company = "Adventure Works", .Email = "terry@www.adventure-works.com" }
Дополнительные сведения см. в разделе "Инициализаторы объектов": именованные и анонимные типы или инициализаторы коллекции.
После открытого выражения, внедренного в XML-литерал (
<%=
), или перед закрытием такого выражения (%>
). Рассмотрим пример.Dim customerXml = <Customer> <Name> <%= customer.Name %> </Name> <Email> <%= customer.Email %> </Email> </Customer>
Дополнительные сведения см. в разделе "Внедренные выражения" в ФОРМАТЕ XML.
После оператора объединения (
&
). Рассмотрим пример.cmd.CommandText = "SELECT * FROM Titles JOIN Publishers " & "ON Publishers.PubId = Titles.PubID " & "WHERE Publishers.State = 'CA'"
Дополнительные сведения см. в разделе "Операторы" по функциям.
После операторов назначения (
=
,&=
,:=
,+=
,-=
,*=
,/=
,\=
,^=
,<<=
,>>=
). Рассмотрим пример.Dim fileStream = My.Computer.FileSystem. OpenTextFileReader(filePath)
Дополнительные сведения см. в разделе "Операторы" по функциям.
После двоичных операторов (
+
,-
,/
,*
,Mod
,<>
,<
,>
,<=
,>=
,^
,>>
,<<
,And
,AndAlso
,Or
,OrElse
,Like
,Xor
) в выражении. Рассмотрим пример.Dim memoryInUse = My.Computer.Info.TotalPhysicalMemory + My.Computer.Info.TotalVirtualMemory - My.Computer.Info.AvailablePhysicalMemory - My.Computer.Info.AvailableVirtualMemory
Дополнительные сведения см. в разделе "Операторы" по функциям.
После операторов
Is
иIsNot
. Рассмотрим пример.If TypeOf inStream Is IO.FileStream AndAlso inStream IsNot Nothing Then ReadFile(inStream) End If
Дополнительные сведения см. в разделе "Операторы" по функциям.
После квалификатора элемента (
.
) и перед именем члена. Рассмотрим пример.Dim fileStream = My.Computer.FileSystem. OpenTextFileReader(filePath)
Однако при использовании инструкции
_
или указании значений в списке инициализации для типа необходимо включить символ продолжения строки (With
) после символа квалификатора элемента. При использовании инструкций или списков инициализации объектов рассмотрите возможность разрыва строки после оператора назначения (например,=
при использованииWith
инструкций или списков инициализации объектов). Рассмотрим пример.' 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
Для получения дополнительной информации см. в разделе С... Завершение инструкции или Инициализаторов объектов: именованные и анонимные типы.
После квалификатора свойства оси XML (
.
или.@
или...
). Однако, при использовании ключевого слова_
, необходимо включить символ продолжения строки (With
) при указании квалификатора элемента. Рассмотрим пример.Dim customerName = customerXml. <Name>.Value Dim customerEmail = customerXml... <Email>.Value
Дополнительные сведения см. в разделе "Свойства оси XML".
После знака меньше (<) или перед знаком больше (
>
) при указании атрибута. Также после знака "больше" (>
), когда вы указываете атрибут. Однако при указании атрибутов уровня сборки или уровня модуля необходимо включить символ продолжения строки (_
). Рассмотрим пример.< Serializable() > Public Class Customer Public Property Name As String Public Property Company As String Public Property Email As String End Class
Дополнительные сведения см. в обзоре атрибутов.
До и после операторов запросов (
Aggregate
,Distinct
,From
,Group By
,Group Join
,Join
,Let
,Order By
,Select
,Skip
,Skip While
,Take
,Take While
,Where
,In
,Into
,On
,Ascending
иDescending
). Невозможно разбить линию между ключевыми словами операторов запросов, состоящими из нескольких ключевых слов (Order By
, ,Group Join
Take While
иSkip While
). Рассмотрим пример.Dim vsProcesses = From proc In Process.GetProcesses Where proc.MainWindowTitle.Contains("Visual Studio") Select proc.ProcessName, proc.Id, proc.MainWindowTitle
Дополнительные сведения см. в разделе "Запросы".
После ключевого слова
In
в оператореFor Each
. Рассмотрим пример.For Each p In vsProcesses Console.WriteLine("{0}" & vbTab & "{1}" & vbTab & "{2}", p.ProcessName, p.Id, p.MainWindowTitle) Next
Дополнительные сведения см. в разделе "Для каждого... Следующая инструкция.
После ключевого
From
слова в инициализаторе коллекции. Рассмотрим пример.Dim days = New List(Of String) From { "Mo", "Tu", "We", "Th", "F", "Sa", "Su" }
Дополнительные сведения см. в разделе "Инициализаторы коллекций".
Добавление комментариев
Исходный код не всегда понятный сам по себе, даже для программиста, который его написал. Чтобы документировать свой код, большинство программистов широко используют встроенные комментарии. Примечания в коде могут объяснить процедуру или определенную инструкцию любому пользователю, который читает или работает с ним позже. Visual Basic игнорирует комментарии во время компиляции, и они не влияют на скомпилированный код.
Строки комментариев начинаются с апострофа ('
) или с REM
, за которым следует пробел. Их можно добавлять в любом месте кода, за исключением строки. Чтобы добавить комментарий к инструкции, вставьте апостроф или REM
после инструкции, после чего добавьте комментарий. Комментарии также могут идти по отдельной строке. В следующем примере показаны эти возможности.
' 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.
Проверка ошибок компиляции
Если после ввода строки кода строка отображается с волнистым синим подчеркиванием (сообщение об ошибке может появиться также), в инструкции возникает синтаксическая ошибка. Необходимо выяснить, что не так с утверждением (посмотрите в списке задач или наведите указатель мыши на ошибку и прочтите сообщение об ошибке) и исправьте его. Пока вы не исправите все синтаксические ошибки в коде, программа не сможет скомпилироваться правильно.
Связанные разделы
Срок | Определение |
---|---|
Операторы присваивания | Предоставляет ссылки на справочные страницы языка, охватывающие такие операторы назначения, как = , *= и &= . |
Операторы и выражения | Показывает, как объединять элементы с операторами для получения новых значений. |
Практическое руководство. Разрыв и объединение инструкций в коде | Показывает, как разбить одну инструкцию на несколько строк и как поместить несколько операторов в одну строку. |
Как: Пометить утверждения | Показывает, как пометить строку кода. |