Выражения в 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
Вызов веб–методов в окнах отладчика не поддерживается.