Ответ 1
Пример кода:
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
}
Условие: myvar == "bar"
Хорошо работает.
Я хочу установить точку останова на определенной строке в коде С#, когда какая-либо другая переменная равна определенному значению, например:
MyStringVariable == "LKOH"
Как я могу это сделать?
Я попытался щелкнуть правой кнопкой мыши по значку точки останова → Условие, а затем набрал MyStringVariable == "LKOH"
, а Visual Studio сказал, что он не может его оценить.
Пример кода:
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
}
Условие: myvar == "bar"
Хорошо работает.
if (MyStringVariable == "LKOH") Debugger.Break();
вам понадобится пространство имен System.Diagnostics
http://msdn.microsoft.com/en-us/library/system.diagnostics.debugger.break.aspx
Как и в коде, вам нужно использовать:
MyStringVariable == "LKOH"
Двойным эквивалентом является ключ. Без этого он говорит, что он не может оценить, потому что ваше выражение не вычисляет логическое значение.
Вы должны уметь выполнять эту работу. Используете ли вы имя экземпляра Exchange в состоянии? Условие должно быть чем-то вроде myExchange.Name == "LKOH"
not Exchange.Name == "LKOH"
.
Кстати, использование оператора присваивания =
вместо оператора равенства ==
будет работать, но оно установит свойство и отработает полчаса вашего времени, выясняя, что, черт возьми, происходит. Я сделал эту ошибку только вчера.
Переменная, которую вы тестируете, должна находиться в области видимости в точке останова.
var x = "xxx";
{
var y = "yyy";
}
brak(); // x is in scope, y isn't
В моем случае я забыл, что отлаживал приложение VB.
В VB равенство =
not ==
, как и многие другие языки, поэтому моя условная точка останова должна быть myString = "someValue"
not myString == "someValue"