Compartilhar via


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.

Consulte também

Outros recursos

Expressões no depurador

Referência C#