Выражения в Visual Basic
Вычислитель выражений управляемого кода может обрабатывать большинство выражений на языке Visual Basic. В окне Интерпретация вычислитель выражений поддерживает только однострочные операторы.
В следующих подразделах содержатся особые сведения о типах выражений и рассматриваются некоторые типы, которые не поддерживаются вычислителем или поддерживаются только частично:
Приведение типов
Динамические объекты
Вычисление функций
Идентификаторы и типы
Импорт псевдонимов
Объектные переменные, содержащие встроенные типы
Операторы
Вычисление свойств
Строки
Оператор TypeOf
Неподдерживаемые ключевые слова
Объявления переменных
Веб-методы
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} автоматически.
Операторы
Отладчик правильно вычисляет большинство операторов, в том числе перечисленные ниже.
Арифметические операторы: ( expr1+ expr2, expr1- expr2, expr1* expr2, expr1/ expr2, expr1\expr2, expr1^expr2 , expr1Modexpr2 ).
Операторы присваивания: ( var1= expr2, var1^= expr2, var1*= expr2, var1/= expr2, var1\= expr2, var1+= expr2, var1-= expr2, var1&= expr2).
Операторы сравнения: (expr2< expr2, expr2<= expr2, expr1> expr2, expr1>= expr2, expr1= expr2, expr1<> expr2).
Операторы объединения: (expr1& expr2, expr1+ expr2).
Логические операторы: (expr1And expr2, expr1Or expr2, expr1XOr expr2, expr1AndAlso expr2, expr1OrElse expr2, Notexpr1).
Унарные операторы: ( - expr1, Not expr1, GetType (type) ).
Вычисление свойств
Отладчик может вычислять свойства в любом окне переменной. Однако вычисление свойств в отладчике может иметь побочные эффекты (например, вызывать изменение значений переменных), которые повлияют на результаты работы программы. Чтобы избежать побочных эффектов, вызванных случайными вычислениями, можно отключить поддержку вычисления свойств в диалоговом окне Общие, Отладка, Параметры.
Строки
В Visual Basic можно использовать оператор Length в строке:
mystring.Length
-или-
"hello world".Length
Оператор TypeOf
В Visual Basic можно использовать оператор TypeOf в окнах отладчика:
TypeOf expression Is type
Например:
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.
Веб-методы
Вызов веб-методов в окнах отладчика не поддерживается.