我有类似以下代码:
this.Session[key] = "foo"; if ((this.Session[key] ?? string.Empty) == "foo") { //do stuff }
当然,这会产生"可能的非预期参考比较按预期工作"的情况.这里有很好的解决方案,我已经知道修复是在string
看到代码后立即将会话变量转换为a .
但是,代码已有多年历史,并且自最初编写以来从未更改过.直到本周在我们的测试环境中,if
语句被评估为true并执行了该//do stuff
部分.这个错误的代码仍然在我们的生产环境中按预期工作.
怎么会这样?这些编写的代码没有理由按照预期工作; 然而它确实如此,并且仍然在生产中.什么会改变,使这个代码不应该工作,但做了,突然停止工作(或者更确切地说,表现得像它应该有的)?