Visual studio 为什么F#调试器撒谎?
有人能解释为什么VS2012的调试器为同一个对象成员显示不同的值吗?(见图) (很抱歉VS的非英语界面,但我认为情况很清楚。) 代码如下:Visual studio 为什么F#调试器撒谎?,visual-studio,error-handling,f#,Visual Studio,Error Handling,F#,有人能解释为什么VS2012的调试器为同一个对象成员显示不同的值吗?(见图) (很抱歉VS的非英语界面,但我认为情况很清楚。) 代码如下: 调试经验似乎无法识别标识符的正确绑定。在您的示例中,这意味着任何名为Source的标识符实际上显示的是this.Source的值,而不是正确对象的相应属性。请注意,您可以通过将鼠标悬停在y上并展开成员来获得正确的值(尽管这显然不是一个很好的体验) 这个问题表现出来的方式甚至更令人困惑: type T() = member val P = 1
调试经验似乎无法识别标识符的正确绑定。在您的示例中,这意味着任何名为
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
的哪个实例上悬停,你都会得到错误的结果 那么,这是不是意味着演播室有点乱?或者这只是一个我应该记住的把戏?我当然会称之为虫子,是的。