根据Microsoft:"即时窗口在设计时用于调试和计算表达式、执行语句、打印变量值等。
请注意,它说"在设计时"。我也在网上阅读了这方面的其他声明。
但是,当有人问他们为什么得到"在设计模式下无法计算表达式"错误时,每个人都总是说它只在调试模式下工作。
我可以理解,当它们引用文本框值等项目时,有些东西在设计模式下不起作用。但我真的不明白为什么我必须设置断点,运行我的应用程序,然后等待它到达断点,只是为了找出1 + 1
是什么。
我承认很沮丧,因为我来自Visual Basic 6.0。在那里,我可以打印1 + 1
并在设计模式下获得2
。我还可以在设计模式下调用公共函数并获得答案。
所有这些都来自我寻找类型转换的答案。由于我在网上找不到答案,我决定最快和最简单的方法是在即时窗口中快速测试一些语句,看看哪个有效。
使用即时窗口时 .NET 是否倒退?
我理解你的沮丧。幸运的是,Roslyn(Microsoft的开源C#编译器)的开发允许在Visual Studio中拥有所谓的"交互式窗口"。您需要安装 Roslyn,经过一些简单的设置步骤后,您可以在该窗口中评估 C# 表达式:https://github.com/dotnet/roslyn/wiki/Interactive-Window
它与即时窗口非常不同,因为 REPL 循环可以在某种程度上隔离,但似乎您甚至可以在某种程度上与项目进行交互:C# 交互式窗口可以与我的代码交互吗?
这甚至可以追溯到 2011-2012 年,自 2015 年底以来,它是 Visual Studio 2015 CTP1 的默认部分:View -> Other Windows -> C# Interactive
简而言之,这取决于应用程序的上下文,即当前在"解决方案资源管理器"中选择的解决方案及其项目类型。 例如,Web 项目不会在设计时计算即时表达式,因为它需要设置该环境,但是,库和控制台类型的项目会。
MSDN 声明:
"在为设计时表达式评估建立上下文时, Visual Studio 引用解决方案中当前选定的项目 资源管理器。如果未在"解决方案资源管理器"中选择任何项目,则可视 Studio 尝试针对启动项目评估函数。 如果无法在当前上下文中计算函数,则将 收到错误消息。如果您尝试计算函数 在不是解决方案的启动项目中,并且您 收到错误,请尝试在解决方案资源管理器中选择项目,然后 再次尝试评估。
但是,如果您在 Web 项目中,则需要命中断点才能在即时窗口中计算表达式。
这可能在其他答案中涵盖
对我来说,我可以做你在Visual Studio 2008的即时窗口中提到的任何事情,比如找出1+1的总和或找出"sdfd"的长度。长度等可以从即时窗口完成。因此,这不是 .NET 中的倒退。