Pergunta

Quero definir um ponto de interrupção em uma determinada linha no código C# quando alguma outra variável é igual a um valor específico, digamos:

MyStringVariable == "LKOH"

Como eu posso fazer isso?

Tentei clicar com o botão direito do mouse no ícone do ponto de interrupção -> condição e depois digitei MyStringVariable == "LKOH" E o Visual Studio disse que não pode avaliá -lo.

Foi útil?

Solução

Código de amostra:

static void Main(string[] args) {
  string myvar;
  for (int ix = 0; ix < 10; ++ix) {
    if (ix == 5) myvar = "bar"; else myvar = "foo";
  }    // <=== Set breakpoint here
}

Condição: myvar == "bar"

Funciona bem.

Outras dicas

if (MyStringVariable == "LKOH") Debugger.Break();

você precisará de namespace system.diagnostics

http://msdn.microsoft.com/en-us/library/system.diagnostics.debugger.break.aspx

Assim como no código, você precisa usar:

MyStringVariable == "LKOH"

Os dois equals são a chave. Sem ele, está dizendo que não pode avaliar porque sua expressão não se avalia em um booleano.

Você deve ser capaz de fazer isso funcionar. Você está usando o nome da instância do Exchange na condição? A condição deve ser algo como myExchange.Name == "LKOH" não Exchange.Name == "LKOH".

A propósito, usando o operador de atribuição = em vez do operador de igualdade == Funcionará, mas ele definirá a propriedade e desperdiçará meia hora do seu tempo descobrindo o que diabos está acontecendo. Eu cometi esse erro ontem.

A variável que você está testando precisa estar no escopo no ponto de interrupção.

var x = "xxx";
{ 
  var y = "yyy";
}

brak(); // x is in scope, y isn't

No meu caso, esqueci que estava depurando um aplicativo VB.

Na igualdade de VB é = não == Como muitos outros idiomas, assim meu ponto de interrupção condicional precisava ser myString = "someValue" não myString == "someValue"

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top