Операторы в Visual Basic
Оператор в Visual Basic — это полная инструкция.В инструкциях содержатся ключевые слова, операторы, переменные, константы и выражения.Каждая инструкция принадлежит к одной из следующих двух категорий:
Операторы объявления, которые объявляют переменную, константу или процедуру, и могут также указывать тип данных.
Выполняемые операторы, которые инициируют действия.Эти операторы могут вызывать метод или функцию, а также способны выполнять цикл или ветвь, состоящие из блоков кода.Исполняемые операторы содержат Операторы присваивания, которые присваивают значение или выражение переменной или константе.
В этом разделе описана каждая категория.Также в этом разделе описано, как поместить несколько операторов в одной строке и как продолжить оператор на несколько строк.
Операторы объявления
Операторы объявления используются для именования и определения процедур, переменных, свойств, массивов и констант.При объявлении элемента программирования можно также определить его тип данных, уровень доступа и область действия.Дополнительные сведения см. в разделе Характеристики объявленных элементов (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 (Visual Basic).
Присвоение переменной начального значения может быть частью ее объявления, как показано в следующем примере.
Dim m As Integer = 45
' The preceding declaration creates m and assigns the value 45 to it.
Если переменная является объектной переменной, можно явно создать экземпляр ее класса при ее объявлении с помощью ключевого слова Оператор New (Visual Basic), например:
Dim f As New System.Windows.Forms.Form()
Обратите внимание, что начальное значение в операторе объявления не присваивается переменной до тех пор, пока выполнение не достигнет его оператора объявления.До этого времени переменная содержит значение по умолчанию для своего типа данных.
Исполняемые операторы
Исполняемый оператор выполняет действия.Он может вызвать процедуру, переход на другое место в коде, цикл по нескольким инструкциям или вычислить значение выражения.Оператор присваивания является особым случаем исполняемого оператора.
В следующем примере используется управляющая структура 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 (Visual Basic), или же элементом массива.В контексте оператора присваивания такой элемент иногда называется 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
В предыдущем примере к значению n прибавляется 1, а затем новое значение записывается в n.Это краткий эквивалент следующего оператора:
n = n + 1
Многие составные операции присваивания выполняются с помощью операторов этого типа.Список этих операторов и дополнительные сведения о них см. в разделе Операторы присваивания (Visual Basic).
Оператор объединения и присваивания (&=) удобен при добавлении строки в конец уже существующих строк, например:
Dim q As String = "Sample "
q &= "String"
' q now contains "Sample String".
Преобразование типов в операторах присваивания
Значение, присваиваемое переменной, свойству или элементу массива, должно иметь тип данных конечного элемента.В общем случае следует стремиться создавать значение того же типа данных, что и у конечного элемента.Тем не менее, во время присваивания некоторые типы могут быть преобразованы в другие.
Сведения о преобразовании типов данных см. в разделе Преобразование типов в Visual Basic.Говоря коротко, Visual Basic автоматически преобразует значение заданного типа к любому другому типу, до которого он может быть расширен.Расширяющее преобразование всегда успешно завершается во время выполнения и не приводит к потере данных.Например, Visual Basic при необходимости преобразует значение типа Integer к Double, поскольку Integer имеет меньшую разрядность, чем Double.Дополнительные сведения см. в разделе Расширяющие и сужающие преобразования (Visual Basic).
Сужающие преобразования (не являющиеся расширяющими) выполняются с риском сбоя или потери данных во время выполнения.Явное сужающее преобразование можно выполнять с помощью функции преобразования типа; также можно указать компилятору выполнять все преобразования неявно, установив параметр Option Strict Off.Дополнительные сведения см. в разделе Явные и неявные преобразования (Visual Basic).
Размещение нескольких операторов на одной строке
На одной строке возможно размещение нескольких операторов, разделенных символом двоеточия (:).Это показано в приведенном ниже примере.
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
Неявное продолжение строки
Во многих случаях инструкцию можно продолжить на следующей строке, не используя знак подчеркивания (_).В следующей таблице приведен список элементов синтаксиса, которые неявно продолжают инструкцию на следующей строке кода.
Элемент синтаксиса |
Пример |
После запятой (,). |
|
После открывающей скобки (() или перед закрывающей скобкой ()). |
|
После открывающей фигурной скобки ({) или перед закрывающей фигурной скобкой (}). |
Дополнительные сведения см. в разделе Инициализаторы объектов: именованные и анонимные типы (Visual Basic) или Инициализаторы коллекций (Visual Basic). |
После открытого встроенного выражения (<%=) или перед закрытием встроенного выражения (%>) в рамках XML-литерала. |
Дополнительные сведения см. в разделе Встроенные выражения в XML (Visual Basic). |
После оператора объединения (&). |
Дополнительные сведения см. в разделе Список операторов, сгруппированных по функциональному назначению (Visual Basic). |
После операторов назначения (=, &=, :=, +=, -=, *=, /=, \=, ^=, <<=, >>=). |
Дополнительные сведения см. в разделе Список операторов, сгруппированных по функциональному назначению (Visual Basic). |
После двоичных операторов (+, -, /, *, Mod, <>, <, >, <=, >=, ^, >>, <<, And, AndAlso, Or, OrElse, Like, Xor) в рамках выражения. |
Дополнительные сведения см. в разделе Список операторов, сгруппированных по функциональному назначению (Visual Basic). |
После операторов Is и IsNot. |
Дополнительные сведения см. в разделе Список операторов, сгруппированных по функциональному назначению (Visual Basic). |
После символа квалификатора элемента (.) перед именем элемента.Однако необходимо использовать знак продолжения строки (_) после знака квалификатора элемента при использовании оператора With или указании значений в списке инициализации для типа.При использовании оператора With или списков инициализации объектов попробуйте разорвать строку после оператора назначения (например, =). |
Дополнительные сведения см. в разделе Оператор With... End With (Visual Basic) или Инициализаторы объектов: именованные и анонимные типы (Visual Basic). |
После квалификатора свойства XML-оси (. или .@ или ...).Однако необходимо использовать знак продолжения строки (_) при указании квалификатора элемента с использованием ключевого слова With. |
Дополнительные сведения см. в разделе Свойства оси XML (Visual Basic). |
После знака "меньше" (<) или перед знаком "больше" (>) при задании атрибута.Также после знака "больше" (>) при задании атрибута.Однако необходимо использовать знак продолжения строки (_) при задании атрибутов уровня сборки или уровня модуля. |
Дополнительные сведения см. в разделе Атрибуты (C# и Visual Basic). |
До и после операторов запроса (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). |
Дополнительные сведения см. в разделе Запросы (Visual Basic). |
После ключевого слова In в операторе For Each. |
Дополнительные сведения см. в разделе Оператор For Each... Next (Visual Basic). |
После ключевого слова From в инициализаторе коллекции. |
Дополнительные сведения см. в разделе Инициализаторы коллекций (Visual Basic). |
Добавление комментариев
Исходный код не всегда понятен без пояснений даже для написавшего его программиста.Поэтому для документирования своих кодов большинство программистов использует комментарии.С помощью комментариев в коде можно описать процедуру или определенную инструкцию для тех, кто будет в дальнейшем просматривать этот код или работать с ним.При компиляции в 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.
Проверка ошибок компиляции
Если после набора строки кода строка отображается с подчеркнутой волнистой голубой линией (также может быть выведено и сообщение об ошибке), это означает, что в операторе допущена синтаксическая ошибка.Необходимо узнать, в чем заключается ошибка инструкции (для этого просмотрите список задач или поместите указатель мыши на ошибку и прочтите ее описание) и исправить ее.До тех пор, пока все синтаксические ошибки не будут исправлены, программа будет давать сбой при компиляции.
Связанные разделы
Термин |
Определение |
Ссылки на разделы справочника по языку, в которых рассматриваются операторы присваивания, такие как =, *= и&=. |
|
Описание процедуры совместного использования элементов и операторов для получения новых значений. |
|
Практическое руководство. Разбиение и объединение инструкций в коде (Visual Basic) |
Описывает, как разбить один оператор на несколько строк и как разместить несколько операторов на одной строке. |
Описывает, как пометить строку кода. |