6

VS2012 のデバッガーがオブジェクトの同じメンバーに対して異なる値を表示している理由を誰かに説明してもらえますか? (図参照)

http://s2.uploads.ru/jlkw0.png (VS の非英語インターフェースで申し訳ありませんが、状況は明らかだと思います。)

ここにコード:

http://pastie.org/7186239

4

1 に答える 1

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()

さて、どのインスタンスにPカーソルを合わせても、間違った結果が得られます!

于 2013-03-30T18:57:43.220 に答える