取以下函数:
DataTable go() {
return someTableAdapter.getSomeData();
}
当我在这个函数中设置断点时,是否有可能检查返回值?Go()直接耦合到.aspx页面中的数据网格。
检查返回数据表的唯一方法是使用临时变量。然而,这有点不方便。没有别的办法了吗?
取以下函数:
DataTable go() {
return someTableAdapter.getSomeData();
}
当我在这个函数中设置断点时,是否有可能检查返回值?Go()直接耦合到.aspx页面中的数据网格。
检查返回数据表的唯一方法是使用临时变量。然而,这有点不方便。没有别的办法了吗?
当前回答
我想在Visual Studio 2015中扩展PascalK的答案,因为有一个隐藏的特性没有在检查方法调用的返回值中记录。
如果有嵌套函数调用,则会自动创建伪变量$ResultValueX,其中X指的是函数调用顺序。因此,如果你有一个像Multiply(Five(), Six())这样的调用,则会创建以下伪变量:
Five() | $ResultValue1 = 5
Six() | $ResultValue2 = 6
Multiply() | $ResultValue3 = 30
其他回答
我想在Visual Studio 2015中扩展PascalK的答案,因为有一个隐藏的特性没有在检查方法调用的返回值中记录。
如果有嵌套函数调用,则会自动创建伪变量$ResultValueX,其中X指的是函数调用顺序。因此,如果你有一个像Multiply(Five(), Six())这样的调用,则会创建以下伪变量:
Five() | $ResultValue1 = 5
Six() | $ResultValue2 = 6
Multiply() | $ResultValue3 = 30
我知道的唯一方法是在返回行上放置一个断点,然后调用Quick Watch窗口并输入返回的表达式:
someTableAdapter.getSomeData();
但这只有在调用不改变任何对象的状态时才有效(因为当您恢复执行时,将会对同一方法进行第二次调用)。
根据客户反馈网站,这可以在Visual Studio 2013中使用CLR 4.5.1完成。它在以前的c#版本中不可用。
(Visual Studio 2008和更早的版本支持VB.NET。C/ c++开发人员一直可以使用它。)
接受的答案在Visual Studio 2015中不能正常工作,但是通过在方法的最后一行上放置断点并按F10,它将把返回值的所有表达式放入locals窗口。
我同意这是一件非常有用的事情:不仅可以在退出方法之前看到它的返回值,而且还可以看到我刚刚跳过的方法的返回值。我把它作为Visual Studio商业扩展“OzCode”的一部分来实现。
有了它,你可以直接在代码编辑器中查看方法的返回值,就像一种hud显示:
要了解更多信息,请观看这个视频。