【问题标题】:Is it possible to inspect the return value of a function that is not saved?是否可以检查未保存的函数的返回值?
【发布时间】:2013-06-01 02:18:16
【问题描述】:

这是this question 的细微变化。如果我有一个执行返回值的操作的函数,但我没有在变量中捕获该值,有没有什么办法可以在调试器单步执行时获取该值,而无需在即时窗口中第二次运行该函数?

一个实际的例子

using (SqlConnection cnSqlConnect = OpenConnection(ConnectionString))
using (SqlCommand sqlCmd = new SqlCommand(command, cnSqlConnect))
{
    sqlCmd.ExecuteNonQuery();
}

有什么方法可以在不运行两次的情况下获得sqlCmd.ExecuteNonQuery() 的值?

【问题讨论】:

    标签: c# visual-studio debugging


    【解决方案1】:

    是的,有!

    1. 在函数执行之前中断函数。
    2. 从命令行窗口运行您停止的代码行,前面加上? 以查看结果。像这样:? sqlCmd.ExecuteNonQuery();
    3. 手动将显示下一行要执行的代码的黄色指针向下拖动到下一行,跳过您在命令窗口中运行的代码。

    这将产生只执行一次代码的效果,并让您查看结果。

    有关详细信息,请参阅Basics of using the Command Window

    【讨论】:

    • 你对我的 Dup 的回答给了我解决这个问题的想法:)。它不能用于其他问题,因为运行该命令会产生副作用,但如果您不返回并且只是将值丢弃,那么您的解决方案将有效。 (如果你回答我会支持你的并删除我的)
    【解决方案2】:

    在完整模式下使用 BugAid,您将能够通过使用其 Statement Visualization 功能看到 ExecuteNonQuery 在您跳过它后立即返回的值。

    BugAid 可视化每个方法调用的值,即使该值未分配给变量。它在不重新评估函数的情况下执行此操作(它从不 导致方法执行两次)。

    例如:

    全面披露:我是 BugAid 的共同创造者。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-04
      • 1970-01-01
      • 2013-04-11
      • 2020-10-17
      • 1970-01-01
      • 2021-10-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多