调试监视无法显示变量值:非静态字段需对象引用问题求助
解决调试时无法查看变量X值的问题
嗨,我来帮你搞定这个调试报错的问题~首先得说清楚,你遇到的CS0120错误,本质是调试器没找到对应表单实例的引用,所以没法访问你声明的实例变量X。不过有好几种办法能让你看到X的值:
临时打印到调试控制台:
不用纠结监视功能,直接在赋值代码后面加一行输出代码,调试时就能直接看到结果:// 用debug输出到VS Code调试控制台,或者用info输出到D365的消息窗口 debug(strFmt("当前X的值:%1", X));执行到这行时,调试控制台就会显示X的具体数值,简单粗暴又有效。
修改监视的引用方式:
如果你非要用监视功能,试试在监视窗口里输入this.X而不是直接写X。因为X是表单类的实例成员,加上this就能明确告诉调试器要找当前表单实例里的X,这样就能正确获取到值了。把X改成方法内的局部变量:
如果这个X只在validateWrite()方法里用得到,完全没必要把它声明成表单的成员变量,直接在方法内部声明:public boolean validateWrite() { Amount X; X = element.aFunction(); // 这里直接加监视X就不会报错了 return super(); }局部变量的上下文非常明确,调试器能直接识别,添加监视毫无压力。
切换到正确的调试栈帧:
有时候调试器会跳转到其他方法的栈帧,导致当前上下文不是你的表单实例。你可以在VS Code调试面板的「调用堆栈」里,选中validateWrite()对应的那一行,再重新添加监视X,这时候调试器就会用正确的上下文来查找变量了。
内容的提问来源于stack exchange,提问作者prodev42
相关产品推荐
相关产品推荐

