我试图输出使用断点操作的方法返回的值。该方法包含多个不同的return语句,类似于此示例:
double Foo(int bar, int baz)
{
if (bar < 0)
return Math.Sqrt((double)(baz - bar) * (baz - bar));
if (bar % baz == 0)
{
if (baz == 3)
{
return bar / 2 * baz;
}
else
{
return Math.Pow(bar, baz);
}
}
return Math.Log(baz, bar);
}
我正在寻找一种输出返回值的方法,而无需诉诸重构该方法,以使其将值存储在变量中,或者在每个return语句上设置一个断点,并且必须为每个return语句编写单独的动作。
已接受的this question答案表明,有可能在离开方法之前使用立即窗口中的$ReturnValue
关键字检查返回值。
下图说明了我想要完成的工作。
这当然不行,请打印:
调试的Foo(“ 1”,false)=错误CS0103:名称“ $ ReturnValue”在当前上下文中不存在。
虽然有几个可用的关键字,例如$CALLER
或$TNAME
,但我没有找到能产生返回值的任何内容。
是否可以在单个断点操作中打印返回值?
答案 0 :(得分:2)
您可以在方法调用之后放置断点,并添加断点操作,如下所示:
static int Sum(int a, int b) => a + b;
static void Main(string[] args)
{
int sum = Sum(1,2);
{} // add breakpoint here
}
和操作代码:
Sum returned {x}.
它将在输出窗口中打印:
总和为3。
OR
将断点放入方法的返回部分(在本例中为a + b
),并添加
$FUNCTION result is {a + b}
输出将是:
MyApp.Program.Sum(int,int)结果为3