Изменение возвращаемого значения метода для управляемого кода в отладчике Visual Studio 2010 - PullRequest
1 голос
/ 15 сентября 2010

Скажем, у меня есть этот метод C #:

public bool GetVal()
{
    return a1 == b1 || c1 == d1 || GetE1() == GetF1(); // Illustrating complicated logic here..
}

Я не хочу изменять содержимое переменных / возвращаемых значений методов в приведенном выше утверждении, но хочу вернуть false для методаВызов GetVal().

Можно ли использовать отладчик VS2010 для изменения возвращаемого значения таким же образом, как я могу изменять значения переменных на лету?Может быть, как-то изменить стек вызовов?

Ответы [ 5 ]

1 голос
/ 15 сентября 2010

Невозможно изменить возвращаемое значение напрямую таким способом.Управляемый код имеет очень ограниченную / нет поддержки просмотра возвращаемого значения вызова функции по сравнению с C ++.

Но вы можете перейти на сайт вызова и изменить переменную, которой присвоено значение вызова функции.

0 голосов
/ 15 сентября 2010

Как и другие ответы отмечены:

public bool GetVal()
{
    bool result = a1 == b1 || c1 == d1 || GetE1() == GetF1();
    return result;
}

Работает отлично.Тем не менее, в общем коде, который связывает воедино огромные строки операторов if, гораздо труднее читать и отлаживать в любом случае.

Вы должны разбивать свою функцию на шаги, а не выполнять все шаги в одной строке.

Еще один метод для выполнения вашей задачи - установить точку останова в вашем коде на if(GetVal()) и просто изменить путь выполнения оттуда, вместо того чтобы пытаться изменить возвращаемое значение, просто измените положение дел, призначение используется .

0 голосов
/ 15 сентября 2010
public bool GetVal()
{
    var result = a1 == b1 || c1 == d1 || GetE1() == GetF1(); // Illustrating complicated logic here..
    return result;
}

Установить точку останова на обратной линии и изменить переменную результата.

0 голосов
/ 15 сентября 2010

Мне часто бывает нужно то же самое, к сожалению, единственный способ сделать это - создать временную переменную, которую вы можете изменить через окно Locals или Watch, прежде чем функция вернется.

public bool GetVal()
{
    bool b = a1 == b1 || c1 == d1 || GetE1() == GetF1();
    return b;//Set breakpoint here
}
0 голосов
/ 15 сентября 2010
public bool GetVal()
{
    bool retval = a1 == b1 || c1 == d1 || GetE1() == GetF1();
// edit retval to be 'false' in the debugger now
    return retval;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...