Expressões no Visual Basic
This topic applies to:
Edition |
Visual Basic |
C# |
F# |
C++ |
Web Developer |
---|---|---|---|---|---|
Express |
|||||
Pro, Premium e Ultimate |
O avaliador da expressão gerenciado aceita a maioria das expressões escritas Visual Basic. In the Immediate window, the expression evaluator only supports single-line statements.
As seções a seguir oferecem informações específicas e discutem alguns dos tipos de expressão que não são suportados ou suporte parcial:
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 Basicnão oferece suporte a regras autoexpand para exibir o conteúdo de um tipo de dados no formulário significativo. For more information, see Displaying Elements of a Custom Data Type.
Casts
Simple casts work in the debugger:
A = CStr(B)
Objetos dinâmicos
O avaliador da expressão pode avaliar as variáveis são tipificadas estaticamente como dinâmicos. Ele também pode avaliar os objetos que implementam a interface IDynamicObject. Quando os objetos que que implemente a interface de IDynamicObject são avaliados na Watch janela, um modo de exibição dinâmica nó é adicionado. O nó de exibição dinâmica mostra os membros do objeto, mas não permite editar os valores dos membros.
Não há suporte para os seguintes recursos de objetos dinâmicos:
O + = de compostos de operadores, o-=, % = / =, e * =
Muitas conversões, incluindo conversões numéricos e projeções de argumento de tipo
Chamadas de método com mais de dois argumentos
Getters de propriedade com mais de dois argumentos
Setters de propriedade com argumentos
A atribuição de um indexador
Os operadores booleanos & & e | |
Function Evaluation
The debugger supports the evaluation of functions, including overloaded functions. Therefore, you can enter either of the following expressions, and the debugger will call the correct version of the overloaded function:
myFunction (param1)
myFunction (param1, param2)
Evaluating a function in the debugger calls and executes the code for that function. If the function has side effects, such as allocating memory or changing the value of a global variable, evaluating the function in a debugger window will change the state of your program, which can produce unexpected results.
When you set a breakpoint on an overloaded function, the location of the breakpoint depends on how you specify the function. If you specify only the function name, the debugger will set one breakpoint on each overload of that function name. Se você especificar a assinatura concluída, o nome da função e a lista de argumentos completa, o depurador define um ponto de interrupção na sobrecarga especificada.
Identifiers and Types
Debugger expressions can use any identifier visible within the current scope. Se o depurador é interrompido na função Magh, por exemplo, você pode usar a maioria dos identificadores visíveis na Magh, incluindo nomes de variáveis e funcionar nomes. Local constants are not supported. You can set the value of any variable visible within the current scope.
The debugger can correctly display any variable of a primitive or intrinsic type. For variables of class type, the debugger correctly displays the value based on the derived-most type. Se você tiver um objeto leo do tipo Lion, derivado do tipo Cat, você pode avaliar leo.Clawlength e obter o valor correto para um objeto do tipo Lion.
Import Aliases
You cannot use import aliases in the debugger windows.
Object Variables Containing Intrinsic Types
Object variables that contain intrinsic variable types, such as integer, are displayed and edited in a manner that may appear counterintuitive. For example, suppose your source code contains object variable like this:
Dim obj As Object = 5
O Watch janela mostra o valor da variável obj como:
5 {Integer}
To change the value of this variable to 6, you would enter:
6
You would not enter:
6 {Integer}
Depois de editar o valor, você irá notar que o depurador adiciona o {Integer} para você.
Operators
The debugger correctly evaluates most operators, including:
Operadores aritméticos: ( expr1 + expr2, expr1 - expr2, expr1 * expr2, expr1 / expr2, expr1 \ expr2, expr1 ^ expr2 , expr1 Mod expr2 ).
Operadores de atribuição: ( var1 = expr2, var1 ^= expr2, var1 *= expr2, var1 /= expr2, var1 \= expr2, var1 += expr2, var1 -= expr2, var1 &= expr2).
Operadores de comparação: (expr2 < expr2, expr2 <= expr2, expr1 > expr2, expr1 >= expr2, expr1 = expr2, expr1 <> expr2).
Operadores de concatenação: (expr1 & expr2, expr1 + expr2).
Operadores lógicos: (expr1 And expr2, expr1 Or expr2, expr1 XOr expr2, expr1 AndAlso expr2, expr1 OrElse expr2, Not expr1).
Operadores unários: ( - expr1, Not expr1, GetType (type) ).
Property Evaluation
The debugger can evaluate properties in any variable window. However, evaluating a property in the debugger can have side effects, such as changing variable values, that affect program results. To protect against side effects caused by accidental evaluation, you can turn property evaluation off in the General, Debugging, Options dialog box.
Strings
Em Visual Basic, você pode usar o Length o operador em uma seqüência de caracteres:
mystring.Length
- ou -
"hello world".Length
TypeOf Operator
Em Visual Basic, você pode usar o TypeOf operador nas janelas do depurador:
TypeOf expressão Is tipo
For example,
TypeOf Me Is Integer
Exibe o valor false.
Se você usar TypeOf, ele deve ser parte de uma expressão que utiliza Is. Se você usar TypeOf sem Is, você receberá a seguinte mensagem de erro:
Is required
Unsupported Keywords
O seguinte Visual Basic não há suporte para palavras-chave em expressões de janela do depurador:
AddressOf
End
Error
Exit
Goto
On Error
Return
Resume
Select/Case
Stop
SyncLock
Throw
Try/Catch/Finally
With
Além disso, nenhum namespace ou o módulo nível palavras-chave, como End Sub ou Module, são suportadas.
Variable Declarations
You cannot declare explicit new variables in debugger windows.
However, you can assign to an implicit variable in the Immediate window. These implicit variables are scoped to the debugger and not accessible outside the debugger. Por exemplo, a instrução o = 5 implicitamente criará uma nova variável de o e atribua o valor 5 para o proprietário. Essas variáveis implícitas são do tipo Object , a menos que o tipo pode ser inferido pelo depurador.
WebMethods
You cannot call WebMethods from debugger windows.