2013-03-30 2 views
6

Может ли кто-нибудь объяснить мне, почему отладчик VS2012 показывает разные значения для одного и того же элемента объекта? (Смотрите рисунок)Почему F # отладчик лежит?

http://s2.uploads.ru/jlkw0.png (Извините за nonEnglish интерфейс VS, но я думаю, что ситуация ясна.)

Вот код:

http://pastie.org/7186239

ответ

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 вы наведите курсор мыши, вы получите неправильные вещи!

+0

Итак, это значит, что Studio немного глючит? Или это просто трюк, который я должен помнить? – Vladimir

+4

Я бы назвал это ошибкой, да. – kvb

Смежные вопросы