我正在尝试使用断点操作输出方法返回的值。该方法包含多个不相同的返回语句,类似于此示例:
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);
}
我正在寻找一种输出返回值的方法,而无需重构该方法,以便将值存储在变量中,或者在每个返回语句上放置断点,并且必须为每个返回语句编写单独的操作。
已接受的答案 this question表明可以在离开方法之前在立即窗口中使用 $ReturnValue
关键字检查返回值。
下图说明了我想要完成的任务。
这当然行不通,并打印:
DEBUG Result of Foo("1", false) = error CS0103: The name "$ReturnValue" does not exist in the current context.
虽然有几个可用的关键字,例如 $CALLER
或 $TNAME
,但我还没有找到任何可以产生返回值的关键字。
是否可以在单个断点操作中打印返回值?
最佳答案
您可以在方法调用之后放置断点并添加断点操作,如下所示:
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}.
它将在输出窗口中打印:
Sum returned 3.
或者
将断点放置在方法的返回部分(在本例中为 a + b
)并添加类似
$FUNCTION result is {a + b}
输出将是:
MyApp.Program.Sum(int, int) result is 3
关于c# - 断点操作可以打印返回值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55023636/