Je souhaite définir un point d'arrêt sur une certaine ligne de code C # lorsqu'une autre variable est égale à une valeur spécifique, par exemple:
MyStringVariable == "LKOH"
Comment puis je faire ça?
J'ai essayé de cliquer avec le bouton droit sur l'icône du point d'arrêt -> Condition, puis de saisir MyStringVariable == "LKOH"
et Visual Studio a déclaré qu'il ne pouvait pas l'évaluer.
Exemple de code:
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
}
Condition: myvar == "bar"
Fonctionne bien.
if (MyStringVariable == "LKOH") Debugger.Break();
vous aurez besoin de l'espace de noms System.Diagnostics
http://msdn.Microsoft.com/en-us/library/system.diagnostics.debugger.break.aspx
Tout comme dans le code, vous devez utiliser:
MyStringVariable == "LKOH"
Le double égal est la clé. Sans lui, cela signifie qu'il ne peut pas évaluer parce que votre expression n'évalue pas un booléen.
Vous devriez être capable de faire ce travail. Utilisez-vous le nom d'instance Exchange dans la condition? La condition devrait être quelque chose comme myExchange.Name == "LKOH"
pas Exchange.Name == "LKOH"
.
En passant, utiliser l'opérateur d'assignation =
au lieu de l'opérateur d'égalité ==
fonctionnera, mais il définira la propriété et vous fera perdre une demi-heure de votre temps à comprendre ce qui se passe. J'ai commis cette erreur hier.
Dans mon cas, j'ai oublié que je déboguais une application VB.
Dans VB, l'égalité est =
et non pas ==
comme beaucoup d'autres langues; mon point d'arrêt conditionnel devait donc être myString = "someValue"
et non pas myString == "someValue"
.
La variable que vous testez doit être dans la portée au point d'arrêt.
var x = "xxx";
{
var y = "yyy";
}
brak(); // x is in scope, y isn't