为什么F#调试器在于什么?

Vla*_*mir 6 error-handling f# visual-studio

谁能解释一下为什么VS2012的调试器为同一个对象成员显示不同的值?(见图)

http://s2.uploads.ru/jlkw0.png(对不起VS的非英语界面,但我认为情况很清楚.)

这里的代码:

http://pastie.org/7186239

kvb*_*kvb 8

调试经验似乎在识别标识符的正确绑定方面做得很差.在您的示例中,这意味着所调用的任何标识符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()
Run Code Online (Sandbox Code Playgroud)

现在,无论P你徘徊在哪个例子,你都会得到错误的东西!

  • 我当然把它称为bug,是的. (4认同)