繁体   English   中英

如何确定未存储在变量中的return语句的值?

[英]How do you determine the value of a return statement that isn't stored in a variable?

我正在使用的代码有许多递归方法调用,它们直接返回方法的结果而不将其存储到变量中。

public bool foo()
{
  return bar();
}

public bool bar()
{
  return infinitMethodCalls();
}

因此,调试很痛苦。 如何在不使用临时变量或遵循无限方法调用的情况下确定bar()返回的值?

临时变量示例:

public bool foo()
{
  return result = bar();
}

我正在使用的代码主要以这种方式编写。

这取决于您使用的VS版本。

对于Visual Studio 2013,您可以显示“Autos”窗口,它会动态显示您在调试时跳过的所有函数的返回值。 您可以在此处找到Autos Window:在VS菜单中调试=> Windows => Autos。 (有关详细信息,请参阅此处

对于例如,你可以使用IntelliTraces Visual Studio 2010的“电话查看”作为回答这里

那么使用trace语句呢? 我假设你想知道在调试递归时调用堆栈上每次调用的结果是什么。

注意:在函数顶部使用trace语句会将输出从头到尾排序到控制台。

例如:

void Factorial(int n) {

    Trace.WriteLine(n);

    if (n == 0)
       return 1;
    else
       return (n * factorial(n-1));

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM