Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Инструкция в 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, он выполнит метод spinClockwiseaWidget. Если значение равно False, он выполнит метод spinCounterClockwiseaWidget. Структура 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 JoinTake 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.
Проверка ошибок компиляции
Если после ввода строки кода строка отображается с волнистым синим подчеркиванием (сообщение об ошибке может появиться также), в инструкции возникает синтаксическая ошибка. Необходимо выяснить, что не так с утверждением (посмотрите в списке задач или наведите указатель мыши на ошибку и прочтите сообщение об ошибке) и исправьте его. Пока вы не исправите все синтаксические ошибки в коде, программа не сможет скомпилироваться правильно.
Связанные разделы
| Срок | Определение |
|---|---|
| Операторы присваивания | Предоставляет ссылки на справочные страницы языка, охватывающие такие операторы назначения, как =, *=и &=. |
| Операторы и выражения | Показывает, как объединять элементы с операторами для получения новых значений. |
| Практическое руководство. Разрыв и объединение инструкций в коде | Показывает, как разбить одну инструкцию на несколько строк и как поместить несколько операторов в одну строку. |
| Как: Пометить утверждения | Показывает, как пометить строку кода. |