【发布时间】:2019-12-30 06:40:17
【问题描述】:
由于 C# 不是像 python 或 Clojure 这样的语言,因此可以在 REPL 中评估这些语言。那么,我们在 watch 窗口或任何评估器窗口中编写的表达式是如何即时执行的?
这可能很明显,但我无法弄清楚。
编辑:函数不是 C# 中的一等公民。每当我们附加断点时,执行就会停止,并且我们从正在运行的线程中获得当前上下文,并且每当我们更改变量值时,它就是更新线程/堆栈中的值的方式。我想了解我在窗口中编写的表达式是如何在内部执行的。
比如下面这样的简单表达式,
2 == 2
调试器是否创建了静态类和静态方法来执行表达式?为了在 CLR 中运行,它需要编译,那么它是如何工作的呢?
提前感谢您的宝贵时间。 :)
【问题讨论】:
-
表达式在首次使用时即时编译。
标签: c# visual-studio clr