这怎么可能?这两个值都在内存中,并且在设置了两个值后,执行将在断点处暂停。当值实际上相同时,我很高兴找到一个 if 语句来检查两个布尔值是否不同以执行。因此,我在同一断点使用即时窗口进行了更深入的研究。
好奇的是,我停止了程序,并且(就在我注意到这种不一致的原始调试点)我插入了几行代码:
var one = true;
var two = true;
我破坏了 C# 还是什么?使用相等运算符时,同一方法调用范围内的两对布尔值(我仔细检查了它们的 .GetType() 返回布尔值)如何不一致?
虽然没关系,第一对(双等号方法返回错误的结果)是在可能会或可能不会更改属性值的方法调用之前和之后使用 PropertyInfo.GetValue(object target) 收集的在目标上。我使用 GetValue 两次以确保属性的值在“做某事”之前发生了变化。
我通过多次执行程序得到了相同的结果,所以我不认为这是执行环境的侥幸。