Выражения в Visual Basic

Этот раздел применим к:

Выпуск

Visual Basic

C#

F#

C++

Web Developer

Express

Тема применяется Тема не применяется Тема не применяется Тема не применяется Тема применяется

Pro, Premium и Ultimate

Тема применяется Тема не применяется Тема не применяется Тема не применяется Тема применяется

Вычислитель выражений управляемого кода может обрабатывать большинство выражений на Visual Basic. В окне Просмотр значений переменных средство оценки выражений поддерживает только однострочные инструкции.

В следующих разделах содержатся сведения о типах выражений и рассматриваются некоторые типы, которые поддерживаются или не поддерживаемые вычислителем:

  • Приведение типов

  • Динамические объекты

  • Вычисление функций

  • Идентификаторы и типы

  • Импорт псевдонимов

  • Переменные объектов, содержащие встроенные типы

  • Операторы

  • Вычисление свойств

  • Строки

  • Оператор TypeOf

  • Неподдерживаемые зарезервированные слова

  • Объявления переменных

  • WebMethods

Visual Basic не поддерживает правила автоподстановки для отображения содержимого типа данных в удобочитаемом виде. Дополнительные сведения см. в разделе Отображение элементов пользовательского типа данных.

Приведение типов

В отладчике поддерживается простое приведение типов:

A = CStr(B)

Динамические объекты

Вычислитель выражений может оценивать переменные, которые статически типизированы как динамические. Он также может оценивать объекты, которые реализуют интерфейс IDynamicObject. При вычислении объектов, реализующих интерфейс IDynamicObject в окне Наблюдения, добавляется узел динамического представления. Узел динамического представления отображает элементы объектов, но не разрешает изменение значений этих элементов.

Следующие возможности динамических объектов не поддерживаются:

  • Составные операторы "+=", "-=", "%=", "/=" и "*="

  • Многие приведения, включая числовые приведения и приведения аргументов типа

  • Вызовы методов с более чем двумя аргументами

  • Получатели свойств с более чем двумя аргументами

  • Установщики свойств с аргументами

  • Присвоение индексатору

  • Логические операторы && и ||

Вычисление функций

Отладчик поддерживает вычисление функций, в том числе перегруженных. Поэтому при вводе любого из следующих выражений отладчик вызовет нужную версию перегруженной функции:

myFunction (param1)

myFunction (param1, param2)

При вычислении функции в отладчике вызывается и выполняется код этой функции. Если при выполнении функции возникают побочные эффекты, такие как выделение памяти или изменение значения глобальной переменной, то вычисление функции в окне отладчика приведет к изменению состояния программы, что может повлечь за собой непредвиденные результаты.

Если задать точку останова в перегруженной функции, расположение точки останова будет зависеть от способа задания функции. Если задать только имя функции, то отладчик установит по одной точке останова в каждой версии перегруженной функции с этим именем. Если же задать полную сигнатуру, имя функции и полный список аргументов, отладчик установит только одну точку останова в указанной перегрузке.

Идентификаторы и типы

В выражениях отладчика можно использовать любые идентификаторы, отображающиеся в текущей области. Например, если отладчик остановлен во время выполнения функции Magh, то можно использовать большинство идентификаторов, доступных в области видимости Magh, в том числе имена переменных и имена функций. Локальные константы не поддерживаются. Можно установить значение любой переменной, доступной в текущей области видимости.

Отладчик правильно отображает все переменные простых и встроенных типов. Для переменных типа класса отладчик правильно отображает значение на основе ближайшего производного типа. Если имеется объект leo типа Lion, производный от типа Cat, то можно вычислить leo.Clawlength и получить правильное значение для объекта типа Lion.

Импорт псевдонимов

В окнах отладчика не поддерживается импорт псевдонимов.

Переменные объектов, содержащие встроенные типы

Переменные объектов, содержащие встроенные типы переменных, такие как integer, отображаются и редактируются способом, который может показаться нелогичным. Предположим, например, что исходный код содержит переменную объекта, подобную этой:

Dim obj As Object = 5

Окно Контрольные значения показывает значение переменной obj как:

5 {Integer}

Чтобы заменить значение этой переменной на 6, необходимо ввести:

6

Не следует вводить:

6 {Integer}

После изменения значения, можно заметить, что отладчик добавляет {Integer} за вас.

Операторы

Отладчик правильно вычисляет большинство операторов, в том числе перечисленные ниже.

  • Арифметические операторы: (выражение1 + выражение2, выражение1 - выражение2, выражение1 * выражение2, выражение1 / выражение2, выражение1 \ выражение2, выражение1 ^ выражение2 , выражение1 Mod выражение2 ).

  • Операторы присваивания: ( var1 = expr2, var1 ^= expr2, var1 *= expr2, var1 /= expr2, var1 \= expr2, var1 += expr2, var1 -= expr2, var1 &= expr2).

  • Операторы сравнения: (выражение2 < выражение2, выражение2 <= выражение2, выражение1 > выражение2, выражение1 >= выражение2, выражение1 = выражение2, выражение1 <> выражение2).

  • Операторы объединения: (выражение1 & выражение2, выражение1 + выражение2).

  • Логические операторы: (expr1 And expr2, expr1 Or expr2, expr1 XOr expr2, expr1 AndAlso expr2, expr1 OrElse expr2, Not expr1).

  • Унарные операторы: ( - expr1, Not expr1, GetType (type) ).

Вычисление свойств

Отладчик может вычислять свойства в любом окне переменной. Однако вычисление свойств в отладчике может иметь побочные эффекты (например, вызывать изменение значений переменных), которые повлияют на результаты работы программы. Чтобы избежать побочных эффектов, вызванных случайными вычислениями, можно отключить поддержку вычисления свойств в диалоговом окне Общие параметры отладки.

Строки

В Visual Basic можно использовать оператор Length в строке:

mystring.Length

– или –

"hello world".Length

Оператор TypeOf

В Visual Basic можно использовать оператор TypeOf в окнах отладчика:

TypeOf выражение Is тип

Например:

TypeOf Me Is Integer

отображает значение false.

Если вы используете TypeOf, то он должен входить в состав выражения, содержащего ключевое слово Is. Если оператор TypeOf используется без Is, то появится следующее сообщение об ошибке:

Is required

Неподдерживаемые зарезервированные слова

Следующие зарезервированные слова Visual Basic не поддерживаются в выражениях окон отладчика:

  • AddressOf

  • End

  • Error

  • Exit

  • Goto

  • On Error

  • Return

  • Resume

  • Select/Case

  • Stop

  • SyncLock

  • Throw

  • Try/Catch/Finally

  • With

Кроме того, не поддерживаются зарезервированные слова пространства имен или модуля, например End Sub или Module.

Объявления переменных

В окнах отладчика не поддерживается явное объявление новых переменных.

Однако можно присвоить какое-либо значение неявной переменной в окне Просмотр значений переменных. Эти неявные переменные инкапсулированы в области отладчика и не доступны вне отладчика. Например, оператор o = 5 неявно создает переменную o и присвоит ей значение 5. Такие неявные переменные имеют тип Object, если тип не будет задан отладчиком.

WebMethods

Вызов веб–методов в окнах отладчика не поддерживается.

См. также

Другие ресурсы

Выражения в отладчике

Справочник по языку Visual Basic