Expressões em C#
Este tópico se aplica a:
Edição |
Visual Basic |
C# |
C++ |
Desenvolvedores Web |
---|---|---|---|---|
Express |
||||
Padrão |
||||
PRO e equipe |
Legenda de tabela:
Aplica-se |
|
Não é aplicada |
|
Comando ou comandos oculta por padrão. |
O avaliador da expressão gerenciado aceita a maioria das expressões escritas em C#.As seções a seguir oferecem informações específicas e discutem alguns dos tipos de expressão que não têm suporte:
Identificadores e tipos
Método de avaliação
Operadores
Operadores sobrecarregados
Sequências
Conversões
Operadores typeof e sizeof
Propriedade de avaliação
O avaliador da expressão ignora modificadores de acesso, public, protected, internal, e private. Você pode chamar um private método a partir do Observação janela, por exemplo.Como o avaliador da expressão ignora modificadores de acesso, é possível uma carga inesperada ser chamada.
O avaliador da expressão executa todas as avaliações em um contexto seguro implícito, se o código que sendo executado é seguro ou não seguro.
O avaliador da expressão também ignora blocos marcados e a /checked opção do compilador. Todas as expressões são avaliadas em um contexto desmarcado.
Você pode personalizar a exibição dos tipos de dados personalizados usando atributos.Para obter mais informações, consulte Exibir tipos de dados personalizados.
Identificadores e tipos
Expressões de depurador podem usar qualquer identificador visível dentro do escopo atual.Se o depurador é interrompido no método Magh, por exemplo, você pode usar qualquer identificador visível dentro Magh, incluindo constantes, nomes de variáveis e nomes de método.
O depurador corretamente pode exibir qualquer variável do tipo primitive, enum, ou intrínseco.Para variáveis de tipo de classe, o depurador corretamente exibe o valor com base no tipo mais derivado.Se você tiver um objeto leo do tipo Lion, derivado do tipo Cat, você pode avaliar leo.Claws e obter o valor correto para um objeto do tipo Lion.
Você pode atribuir um novo valor com qualquer expressão que é um l-value.Isso inclui primitivos, classe e System.Object tipos.
Método de avaliação
O depurador oferece suporte a avaliação de métodos, incluindo métodos sobrecarregados.Portanto, você pode inserir qualquer uma das expressões a seguir, e o depurador chamará a versão correta dos métodos sobrecarregados:
Time.Set();
Time.Set(atime);
Na verdade avaliar um método no depurador é chamar e executar o código para esse método.Se o método tem efeitos colaterais, avaliamos o método em uma janela do depurador que alterará o estado de seu programa, que pode produzir resultados inesperados.
Quando você definir um ponto de interrupção em um método sobrecarregado, o local do ponto de interrupção depende como especificar o método.Se você especificar a assinatura concluída (nome do método e lista de argumentos completos), o depurador define um ponto de interrupção na sobrecarga especificada.Se você especificar apenas o nome do método, comportamento o depurador do depende das em um Visual Studio Opções de configuração. Se o Use o IntelliSense para verificar o nome da função caixa de seleção não estiver selecionada, o depurador definirá um ponto de interrupção em cada sobrecarga com esse nome do método.A caixa de diálogo Choose Breakpoint caso contrário, será aberta, permitindo-lhe especificar qual sobrecarga(s) colocar no ponto de interrupção.Para obter mais informações, consulte Como: conjunto um ponto de interrupção de função.
Não há suporte a criação de novos métodos anônimo no depurador nesta versão do Visual Studio.
Operadores
O depurador corretamente avalia os operadores mais internos , incluindo:
Operadores relacionais e de igualdade: ( expr1 > expr2, expr1 < expr2, expr1 <= expr2, expr1 => expr2, expr1 == expr2, expr1 != expr2).
Operadores booliano: (expr1 && expr2, expr1 || expr2, expr1 ? expr2 : expr3).
Operadores aritméticos: (expr1 + expr2,expr1 - expr2, expr1 * expr2, expr1 / expr2, expr1 % expr2 ).
Operadores lógicos: (expr1 & expr2, expr1 ^ expr2, expr1 | expr2 ).
Operadores de desvio: (expr1 >> expr2, expr1 << expr2 ).
Operadores de atribuição: ( lvalue = expr2, lvalue *= expr2lvalue /= expr2, lvalue %= expr2, lvalue += expr2, lvalue -= expr2, lvalue <<= expr2, lvalue >>= expr2, lvalue &= expr2, lvalue ^= expr2, lvalue |= expr2).
Operadores unários: ( +expr1, - expr1, expr1++, ++expr1, expr1--, --expr1).
Operadores sobrecarregados
A maioria do trabalho dos operadores sobrecarregados é no depurador.
Sobrecarga nos operadores fixos +,-, /, %, e & funcionam:
expr1 + expr2
expr1expr2
expr1 / expr2
expr1 % expr2
expr1 & expr2
Sobrecarga nos operadores fixos =, &&, &, e ||, não funcionam:
expr1 = expr2
expr1 && expr2
expr1 & expr2
expr1 || expr2
Sobrecarga nos operadores fixos << e >> não funcionam se ambos os operandos forem variáveis de classe:
object1 <<object2
object1 >> object2
Sobrecarga nos prefixos dos operadores +, -, --, !, e ~ funcionam:
+expr1
-expr1
++expr1
--expr1
!expr1
~expr1
Sobrecarga nos sufixos dos operadores ++ e -- funcionam:
expr1++
expr1--
Indexadores de sobrecarga funcionam:
- expr1[expr2]
Sequências
O depurador reconhecerá o operador indexado quando ele é usado com sequências, bem como matrizes.Assim, por exemplo, você pode inserir:
"hello world"[0]
A janela Watch exibirá o valor correto:
'h'
Em C#, diferentemente C/C++ nativo, você pode editar o valor de uma sequência no depurador.Além disso, você pode usar o Length operador em uma seqüência de caracteres:
mystring.Length
- ou -
"hello world".Length
Em C#, você pode concatenar sequências:
"hello" + "world"
Conversões
Expressões de conversão simples e funcionam no depurador:
(A)x
Casts que envolvem ponteiros não irão funcionar no depurador.
Operadores typeof e sizeof
O depurador oferece suporte a typeof e sizeof operador transformando-o para o equivalente a .NET Framework função.
typeof ( expression )
é transformada em:
System.Type.GetType( expression )
O depurador depois avalia a expressão transformada.
O depurador oferece suporte a sizeof operador.
Propriedade de avaliação
O depurador pode avaliar as propriedades em qualquer janela variável.No entanto, avaliar uma propriedade no depurador pode ter efeitos colaterais que produzem resultados inesperados e indesejados.Para se proteger contra efeitos colaterais causados por avaliações acidentais, você pode desativar propriedade avaliação na caixa de diálogo Options.
WebMethods
Não é possível chamar WebMethods do depurador de janelas.