据微软称:“立即窗口在设计时使用 来调试和计算表达式,执行语句,打印变量值等等。”
注意它说“在设计时”。我也在网上阅读了其他有关此效果的陈述。
但是,当有人问他们为何会得到“在设计模式下无法评估表达式”时。错误,每个人总是说它只能在调试模式下工作。
我可以理解,当它们引用文本框值等项目时,有些东西在设计模式下不起作用。但我真的不明白为什么我必须设置一个断点,运行我的应用程序,并等待它到达断点,只是为了找出1 + 1
是什么。
我承认因为我来自Visual Basic 6.0而感到沮丧。我可以在设计模式下打印1 + 1
并获取2
。我也可以在设计模式下调用公共函数并获得答案。
所有这一切都来自我寻找类型转换的答案。由于我无法在网上找到答案,我决定最快最简单的方法是在即时窗口中测试一些语句REAL QUICK以查看哪一个有效。
使用即时窗口时.NET是倒退吗?
答案 0 :(得分:4)
我理解你的沮丧。幸运的是,Roslyn(微软的开源C#编译器)的开发允许拥有一个所谓的“交互式Windows”#34;在Visual Studio中。您需要安装Roslyn,经过一些简单的设置步骤后,您可以在该窗口中评估C#表达式: https://github.com/dotnet/roslyn/wiki/Interactive-Window
它与立即窗口非常不同,因为REPL循环可能有些孤立,但看起来您甚至可以在某种程度上与您的项目进行交互:Can the C# interactive window interact with my code?
这可以追溯到2011-2012,自2015年底以来它是Visual Studio 2015 CTP1的默认部分:View -> Other Windows -> C# Interactive
答案 1 :(得分:1)
简而言之,它取决于应用程序的上下文,即您当前在解决方案资源管理器中选择的解决方案及其项目类型。例如Web Projects不会在设计时评估直接表达式,因为它需要设置该环境,但是,库和控制台类型的项目将会这样。
“在为设计时表达式评估建立上下文时, Visual Studio引用Solution中当前选定的项目 资源管理器。如果在解决方案资源管理器中没有选择任何项 Studio尝试根据启动项目评估函数。 如果无法在当前上下文中评估该函数,您将会 收到错误消息。如果您正在尝试评估某个功能 在一个不是解决方案的启动项目的项目中 收到错误,尝试在解决方案资源管理器中选择项目 再次尝试评估。“
但是,如果您在Web项目中,则需要点击断点以便在立即窗口中计算表达式。
答案 2 :(得分:0)
对我来说,我可以在Visual Studio 2008的即时窗口中执行您提到的任何操作,例如找出1 + 1的总和或找出“sdfd”的长度。长度等可以从即时窗口完成。所以它不是.NET的倒退。