Expresiones en Visual Basic
El evaluador de expresiones administradas acepta la mayoría de las expresiones escritas en Visual Basic.En la ventana Inmediato, el evaluador de expresiones sólo admite las instrucciones en una línea.
Las secciones siguientes ofrecen información específica y tratan algunos de los tipos de expresión no compatibles o parcialmente compatibles:
Casts
Dynamic Objects
Function Evaluation
Identifiers and Types
Import Aliases
Object Variables Containing Intrinsic Types
Operators
PropertyEvaluation
Strings
TypeOf Operator
Unsupported Keywords
Variable Declarations
WebMethods
Visual Basic no admite reglas de ampliación automática para mostrar el contenido de un tipo de datos de modo coherente.Para obtener más información, vea Mostrar elementos de un tipo de datos personalizado.
Conversiones de tipo
En el depurador, funcionan las conversiones de tipo sencillas:
A = CStr(B)
Objetos dinámicos
El evaluador de expresiones puede evaluar variables con tipos estáticos como dinámicas.También puede evaluar objetos que implementan la interfaz IDynamicObject.Cuando los objetos que implementan la interfaz IDynamicObject se evalúan en la ventana Inspección, se agrega un nodo Vista dinámica.El nodo Vista dinámica muestra los miembros del objeto pero no permite la edición de los valores de los miembros.
No se admiten las características siguientes de objetos dinámicos:
Los operadores compuestos +=, -=, %=, /= y *=
Muchas conversiones de tipos, incluidas las conversiones numéricas y las conversiones de argumentos de tipos
Llamadas al método con más de dos argumentos
Captadores de propiedades con más de dos argumentos
Establecedores de propiedades con argumentos
Asignar a un indizador
Los operadores booleanos && y ||
Evaluación de funciones
El depurador admite la evaluación de funciones, incluidas funciones sobrecargadas.Por tanto, se puede escribir cualquiera de las siguientes expresiones y el depurador llamará a la versión correcta de la función sobrecargada:
myFunction (param1)
myFunction (param1, param2)
Cuando se evalúa una función en el depurador, se llama y se ejecuta el código de esa función.Si la función tiene efectos secundarios, como la asignación de memoria o el cambio de valor de una variable global, evaluar la función en la ventana del depurador cambiará el estado del programa, lo que puede producir resultados inesperados.
Cuando se establece un punto de interrupción en una función sobrecargada, la ubicación del punto de interrupción depende de cómo se especifica la función.Si se especifica únicamente el nombre de la función, el depurador establecerá un punto de interrupción en cada sobrecarga de ese nombre de función.Si especifica la firma completa, el nombre de función y la lista completa de argumentos, el depurador establecerá un punto de interrupción en la sobrecarga especificada.
Identificadores y tipos
Las expresiones del depurador pueden utilizar cualquier identificador visible en el ámbito actual.Si se detiene el depurador en la función Magh, por ejemplo, puede utilizar la mayoría de los identificadores visibles en Magh, incluidos las constantes, los nombres de variable y los nombres de función.No se admiten las constantes locales.Puede establecer el valor de cualquier variable visible en el ámbito actual.
El depurador puede mostrar correctamente cualquier variable de tipo primitivo o intrínseco.Para variables de tipo class, el depurador muestra correctamente el valor según el tipo más derivado.Si se tiene un objeto leo de tipo Lion, derivado del tipo Cat, se puede evaluar leo.Clawlength y obtener el valor correcto del objeto de tipo Lion.
Alias de importación
No puede usar alias de importación en las ventanas del depurador.
Variables de objeto que contienen tipos intrínsecos
Las variables de objeto que contienen tipos de variable intrínsecos, como las variables de tipo entero, se muestran y modifican de una manera que parece poco intuitiva.Por ejemplo, suponga que su código fuente contiene la siguiente variable de objeto:
Dim obj As Object = 5
La ventana Inspección mostrará el valor de la variable obj como:
5 {Integer}
Para cambiar el valor de esta variable a 6, tendría que escribir:
6
No escribiría:
6 {Integer}
Después de modificar el valor, observará que el depurador agrega {Integer}.
Operadores
El depurador evalúa correctamente la mayoría de los operadores, incluidos:
Operadores aritméticos: ( expr1+expr2, expr1-expr2, expr1*expr2, expr1/expr2, expr1\expr2, expr1^expr2 , expr1Modexpr2 ).
Operadores de asignación: (var1= expr2, var1^= expr2, var1*= expr2, var1/= expr2, var1\= expr2, var1+= expr2, var1-= expr2, var1&= expr2).
Operadores de comparación: (expr2< expr2, expr2<= expr2, expr1> expr2, expr1>= expr2, expr1= expr2, expr1<> expr2).
Operadores de concatenación: (expr1&expr2, expr1+expr2).
Operadores lógicos: (expr1Andexpr2, expr1Orexpr2, expr1XOrexpr2, expr1AndAlsoexpr2, expr1OrElseexpr2, Notexpr1).
Operadores unarios: (- expr1, Not expr1, GetType (tipo)).
Evaluación de propiedades
El depurador puede evaluar propiedades en cualquier ventana de variable.Sin embargo, evaluar una propiedad en el depurador genera efectos secundarios que afectan a los resultados del programa, como cambiar los valores de las variables.Para evitar los efectos secundarios causados por una evaluación accidental, desactive la evaluación de propiedades en el cuadro de diálogo General, Depurar, Opciones.
Cadenas
En Visual Basic, se puede utilizar el operador Length en una cadena:
mystring.Length
O bien
"hello world".Length
Operador TypeOf
En Visual Basic, puede utilizar el operador TypeOf en las ventanas del depurador:
TypeOf expresiónIs type
Por ejemplo,
TypeOf Me Is Integer
muestra el valor false.
Si utiliza TypeOf, debe formar parte de una expresión que utilice Is.Si utiliza TypeOf sin Is, se mostrará el siguiente mensaje de error:
Is required
Palabras clave no admitidas
Las siguientes palabras clave de Visual Basic no se admiten en expresiones de las ventanas del depurador:
AddressOf
End
Error
Exit
Goto
On Error
Return
Resume
Select/Case
Stop
SyncLock
Throw
Try/Catch/Finally
With
Además, no se admiten palabras clave de espacio de nombres o de nivel de módulo, como End Sub o Module.
Declaraciones de variables
No puede declarar nuevas variables explícitas en las ventanas del depurador.
Sin embargo, puede asignar a una variable implícita en la ventana Inmediato.Estas variables implícitas se encuentran en el ámbito del depurador y no son accesibles fuera de él.Por ejemplo, la instrucción o = 5 creará implícitamente una nueva variable o y le asignará el valor 5.Estas variables implícitas son de tipo Object, a menos que el depurador pueda deducir el tipo.
WebMethods
No se puede llamar a WebMethods desde las ventanas del depurador.