在调试时我能否在快速查看窗口中调用C#的本地函数?

5

我想在本地函数中重置密码。突然间,我尝试从快速监视器中运行此本地函数,但它没有起作用。

enter image description here

如果我做错了什么,请帮助我。先行谢过。


1
QuickWatch 用于查看变量的值,而不是执行代码... - Herohtar
1
尝试使用即时窗口... - Johnny
3
但我可以在 QuickWatch 中运行其他函数... 它显示已评估表达式并且没有值。 - jitendra joshi
我不担心输出,只是想执行该函数。直接窗口也显示相同的错误信息。错误 CS0103:在当前上下文中找不到名称“ResetPasswordLocal”。 - jitendra joshi
1
请确保理解“当前上下文”。由于这是一个实例方法,调试器只能在类的某个方法中当前有断点时才能识别它。一旦你弄清楚了这一点,你会发现它也不太喜欢处理await或Task。当存在活动断点时,不能指望线程正确运行。 - Hans Passant
很不幸,它确实无法工作(在VS17.0.5中也是如此),而相应的问题已经因为活动较少而关闭 :(。 - JBSnorro
2个回答

4
编译器更改了本地函数的名称,这样你就不能使用调试器中的原始名称来调用它。请参见此问题中的示例。您可以暂时修改代码,将本地函数保存到委托变量中。重新编译后,您可以通过 Quick Watch 或 Immediate Window 从委托变量调用该函数。在您的情况下,请在方法开头添加以下代码:
Func<string,Task> f = ResetPasswordLocal;

现在您可以在快速监视中调用f

1
我必须说,我并没有尝试过,并且也不会费心去尝试,因为本地函数远比你想象的要复杂得多,对于调试器来说,我会将其优先级设得很低。

尝试将您的代码放入sharplab.io中,看看需要做出什么调整才能使该函数成为本地函数。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接