c# – 十进制三元不工作
我正在尝试使用三元组来指定小数类型.它不适合我.我疯了吗?
这是我的调试的屏幕截图.在我迈步之前你可以看到一切的价值. 在我走到这里之后是价值.它甚至不是可行的选择之一(即1或2000). 是否有一些奇怪的小数限制,我不知道?当我将其分解为完整的if / else逻辑表示时,它可以正常工作.我唯一可以猜到的是我最近安装了.NET Framework 4.5. UPDATE 我已经清理了解决方案,并确保我按照评论中的建议运行在调试模式下编译的代码.这些似乎都没有改变任何东西. 当我注意到我的所有单元测试仍在通过时,我开始变得好奇.经过一段时间的调查后,我发现当我再踏上一次(即跳过memberItems.Add)时,价格神奇地具有正确的价值. .Net是否会对迭代器块中的yield命令执行类似于三元运算符的延迟解析?我以前从未注意到它,但我不知道它还能是什么.我想我仍然可能会在发布模式下意外运行代码.经过三次检查后,我犯了笨拙的错误. 解决方法
无法从屏幕截图中诊断代码,所以只是一个猜测.
您不能总是完全依赖表达式告诉您的内容.第一种可能的故障模式是调试优化的代码.像价格这样的局部变量通常会被抖动优化器优化,以存储在cpu寄存器而不是堆栈中. watch表达式将显示堆栈位置值,而不是cpu寄存器值. 0是常见的结果.您对此唯一真正的防御只是调试由Debug配置构建的代码. 第二种失败模式是评估监视表达式的方式. CLR在检测到连接的调试器时启动专用线程.然后,调试器可以使用此线程来评估监视表达式.如果变量具有任何线程关联,则可能会出错.常见情况是[ThreadStatic]变量或COM对象的属性. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |