Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 为什么F#调试器撒谎?_Visual Studio_Error Handling_F# - Fatal编程技术网

Visual studio 为什么F#调试器撒谎?

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

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

(很抱歉VS的非英语界面,但我认为情况很清楚。)

代码如下:


调试经验似乎无法识别标识符的正确绑定。在您的示例中,这意味着任何名为
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
的哪个实例上悬停,你都会得到错误的结果

那么,这是不是意味着演播室有点乱?或者这只是一个我应该记住的把戏?我当然会称之为虫子,是的。