Поскольку C# не является таким языком, как Python или Clojure, их можно оценить в REPL. Тогда как выражение, которое мы пишем в окне watch или в любом окне оценщиков, если уж на то пошло, выполняется на лету?
Это может быть очень очевидно, но я не мог понять.
Изменить: функции не являются первоклассными в C#. Всякий раз, когда мы прикрепляем точку останова, выполнение останавливается, и у нас есть текущий контекст из запущенного потока, и всякий раз, когда мы изменяем значение переменной, именно так оно обновляет значение в потоке/стеке. Я хотел бы понять, как выражение, которое я пишу в окне, выполняется внутри.
Например, простое выражение, подобное следующему,
2 == 2
Создает ли отладчик статический класс и статический метод для выполнения выражения? Чтобы запустить в CLR, его нужно скомпилировать, так как же это работает?
Спасибо за ваше время заранее. :)