为什么F#调试器在说谎?
问题描述:
任何人都可以解释为什么VS2012的调试器对同一个对象成员显示不同的值吗? (见图)为什么F#调试器在说谎?
http://s2.uploads.ru/jlkw0.png(对不起,VS的nonEnglish接口,但我认为情况是清楚的。)
下面的代码:
答
调试经验似乎做识别标识符正确绑定的工作很差。在你的例子中,这意味着任何标识符Source
确实显示的值是this.Source
,而不是正确对象的相应属性。请注意,您可以通过悬停在y
之上并扩大成员来获得正确的价值(尽管这显然不是一个好的体验)。
还有更令人困惑的方式,这个问题表现:
type T() =
member val P = 1
member this.DoSomething() =
let P = "test" // set breakpoint here, hover over P
printfn "%i" this.P // set breakpoint here, hover over P
T().DoSomething()
现在,你将鼠标悬停在两者的P
情况下,你会得到错误的东西!
那么,这是否意味着Studio是一个有点儿车?或者这只是我应该记住的一个技巧? – Vladimir
我肯定会说它是一个错误,是的。 – kvb