Операторы в 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.
Вы можете назначить начальное значение переменной как часть его объявления, как показано в следующем примере.
Dim m As Integer = 45
' The preceding declaration creates m and assigns the value 45 to it.
Если переменная является переменной объекта, вы можете явно создать экземпляр своего класса при объявлении его с помощью новой ключевое слово оператора, как показано в следующем примере.
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
в . Для получения дополнительной информации см. Widening and Narrowing Conversions.
Сужающие преобразования (те, которые не расширяются) несут риск сбоя во время выполнения или потери данных. Вы можете явно выполнить сужение преобразования с помощью функции преобразования типов или направить компилятор для выполнения всех преобразований неявно, задав параметр 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)
Дополнительные сведения см. в разделе "Операторы" по функциям.
После двоичных операторов (
+
,*
Or
<=
>
>=
And
<<
AndAlso
>>
OrElse
Like
-
Mod
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
,From
In
Distinct
Select
Order By
Skip
Let
Skip While
Join
Take
Take While
Group Join
Group By
Into
On
Where
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.
Проверка ошибок компиляции
Если после ввода строки кода строка отображается с волнистым синим подчеркиванием (сообщение об ошибке может появиться также), в инструкции возникает синтаксическая ошибка. Необходимо выяснить, что не так с инструкцией (глядя в списке задач, или наведите указатель мыши на ошибку и считывает сообщение об ошибке) и исправьте его. Пока вы не исправите все синтаксические ошибки в коде, программа не сможет скомпилироваться правильно.
См. также
Термин | Определение |
---|---|
Операторы присваивания | Предоставляет ссылки на справочные страницы языка, охватывающие такие операторы назначения, как = , *= и &= . |
Операторы и выражения | Показывает, как объединять элементы с операторами для получения новых значений. |
Практическое руководство. Разбиение и объединение инструкций в коде | Показывает, как разбить одну инструкцию на несколько строк и как поместить несколько операторов в одну строку. |
Практическое руководство. Операторы меток | Показывает, как пометить строку кода. |