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 solo admite instrucciones de una sola línea.
En las próximas secciones se ofrece información específica y se tratan algunos de los tipos de expresiones que no se admiten o se admiten parcialmente:
Conversiones
Objetos dinámicos
Evaluación de funciones
Identificadores y tipos
Alias de importación
Variables de objeto que contienen tipos intrínsecos
Operadores
Evaluación de propiedades
Cadenas
Operador TypeOf
Palabras clave no admitidas
Declaraciones de variables
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
En el depurador funcionan las conversiones sencillas:
A = CStr(B)
Objetos dinámicos
El evaluador de expresiones puede evaluar como dinámicas variables con tipos estáticos. 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 de objetos, pero no permite editar los valores de los miembros.
No se admiten las características siguientes de los objetos dinámicos:
Los operadores compuestos +=, -=, %=, /= y *=
Muchas conversiones, incluidas las conversiones numéricas y las conversiones de argumentos de tipos
Llamadas a métodos con más de dos argumentos
Captadores de propiedades con más de dos argumentos
Establecedores de propiedades con argumentos
Asignación a un indizador
Los operadores booleanos && y ||
Evaluación de funciones
El depurador admite la evaluación de funciones, incluidas las funciones sobrecargadas. Por tanto, se puede escribir cualquiera de las expresiones siguientes 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 dicha 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 una 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 dependerá de cómo se especifique la función. Si se especifica únicamente el nombre de función, el depurador establecerá un punto de interrupción en cada sobrecarga de dicho nombre de función. Si se especifica la firma completa, el nombre de función y la lista de argumentos completa, el depurador establecerá un punto de interrupción en la sobrecarga especificada.
Identificadores y tipos
Las expresiones del depurador pueden utilizar cualquier identificador visible dentro del ámbito actual. Si el depurador se detiene en la función Magh, por ejemplo, puede utilizar la mayoría de los identificadores visibles en Magh, incluidos los nombres de variable y los nombres de función. No se admiten 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 las variables de tipo class, el depurador muestra correctamente el valor en función del 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 de un objeto de tipo Lion.
Alias de importación
No se pueden 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 podría parecer 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 muestra 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} por usted.
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: (expr1And expr2, expr1Or expr2, expr1XOr expr2, expr1AndAlso expr2, expr1OrElse expr2, Notexpr1).
Operadores unarios: (- expr1, Not expr1, GetType (type)).
Evaluación de propiedades
El depurador puede evaluar propiedades en cualquier ventana de variables. Sin embargo, evaluar una propiedad en el depurador puede tener efectos secundarios, por ejemplo cambiar los valores de las variables, que afecten a los resultados del programa. Para evitar los efectos secundarios causados por una evaluación accidental, desactive la evaluación de propiedades en el cuadro de diálogo General, Depuración, 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 expression Is 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 las 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 nivel de espacio de nombres o de módulo, como End Sub o Module.
Declaraciones de variables
No se pueden 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.