说我有这个C#方法:
public bool GetVal()
{
return a1 == b1 || c1 == d1 || GetE1() == GetF1(); // Illustrating complicated logic here..
}
我不想在上面的语句中修改变量/返回值的内容,但是想要将false返回给调用GetVal()
的方法。
是否可以使用VS2010调试器以某种方式修改返回值,就像我可以动态修改变量值一样?也许以某种方式修改调用堆栈?
答案 0 :(得分:1)
无法以这种方式直接修改返回值。与C ++相比,托管代码对于查看函数调用的返回值非常有限/不支持。
但你可以做的是去调用网站并修改赋值函数的变量。
答案 1 :(得分:0)
public bool GetVal()
{
bool retval = a1 == b1 || c1 == d1 || GetE1() == GetF1();
// edit retval to be 'false' in the debugger now
return retval;
}
答案 2 :(得分:0)
我经常发现自己需要相同的东西,不幸的是,唯一的方法是创建一个临时变量,您可以在函数返回之前通过Locals或Watch窗口进行更改。
public bool GetVal()
{
bool b = a1 == b1 || c1 == d1 || GetE1() == GetF1();
return b;//Set breakpoint here
}
答案 3 :(得分:0)
public bool GetVal()
{
var result = a1 == b1 || c1 == d1 || GetE1() == GetF1(); // Illustrating complicated logic here..
return result;
}
在返回行上设置断点并修改结果变量。
答案 4 :(得分:0)
正如其他答案所指出的那样:
public bool GetVal()
{
bool result = a1 == b1 || c1 == d1 || GetE1() == GetF1();
return result;
}
完美无缺。但是,一般来说,将大量if语句串起来的代码总是难以阅读和调试。
您应该将功能分解为步骤而不是让它在一行中执行所有步骤。
完成任务的另一种方法是在代码中设置一个断点if(GetVal())
并简单地从那里修改执行路径,而不是试图修改返回值,只需修改事务的状态。值使用。