当前位置: 首页 > 编程语言 > C#

VisualStudio:让调试器意识到函数不会导致“副作用”Share

时间:2023-04-10 18:15:34 C#

VisualStudio:让调试器意识到函数不会导致“副作用”通过watch窗口多次watch函数输出。问题是每次我都必须按刷新按钮,因为“这个表达式会导致副作用并且不会被评估”。有没有办法用[DoesNotCauseSideEffects]之类的东西标记一个函数,这样手表会在我每次迈出一步时自动评估它?我在VS2008或2010中编写C#。编辑:函数看起来像这样,如您所见,没有任何副作用。(x,y,z都是双打)publicoverridestringToString(){return"{"+x.ToString(".00")+","+y.ToString(".00")+","+z.ToString(".00")+"}";您可以将,ac附加到表达式以使其自动刷新值:x.ToString(),ac有关更多信息和其他格式说明符,请参阅MSDN。不,这是不可能的。确定函数是否有副作用实际上是由语言特定的表达式评估器完成的。C#和VB.Net都有不同的EE,并且每个都有自己的决定函数是否不会引起副作用。通常,它们都假设显式函数调用有副作用,并且在调试器想要禁用副作用(例如步进)的情况下不处理它们。解决这个问题最简单的方法是使用Property。默认情况下,属性实例不被认为有副作用,它们将在步骤中被评估。编辑想澄清一些误解。调试器和表达式求值器都不进行任何方法检查以确定函数是否有副作用。他们只是注意到一个函数的存在,并将其标记为可能有副作用。他们不会尝试以任何方式检查方法的代码。您是否尝试过使该函数不修改任何类属性或全局变量?我对“副作用”的即兴定义是“在函数执行期间对执行环境的改变”。所以这个函数会产生副作用:voidaddValues(intoperand1,intoperand2){globalSum=operand1+operand2;}但是这个函数没有:intaddValues(intoperand1,intoperand2){returnoperand1+operand2;}尽可能避免副作用更好。它们会导致调试问题。请参阅此维基百科文章。以上就是C#学习教程的全部内容:VisualStudio:让调试器实现函数不会产生“副作用”。收藏不代表立场,如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: