c# - C# 和 VB.NET 中的即时窗口行为差异

标签 c# vb.net visual-studio-2010 immediate-window

我注意到在调试 C# 项目和 VB.NET 项目时,VS 2010 中的即时窗口的行为有所不同,尽管我还没有找到任何关于这种差异的具体文档。

对于 C# 项目,我可以简单地输入任何表达式,它会被计算并显​​示,即输入

foo.bar == "baz"

会输出

false

然而,在 VB.NET 中,执行相同的操作不会产生任何结果。

我必须在表达式前加一个问号才能让它起作用。

?foo.bar = "baz"

false

为清晰起见和我上面的错误示例进行编辑:

所有其他表达式都表现出相同的行为,包括简单的数学运算,例如“1 + 2”。但有时错误消息会有所不同,因为 1 + 2 会导致错误“数字标签后必须跟冒号”。

有没有办法“修复”此行为并使 VB.NET 即时窗口的行为更像 C# 窗口?必须输入一个?经常使用它时,在每个语句前面可能会很痛苦。

最佳答案

直接窗口的语义只是不同而已。在 C# 中,对您输入的任何表达式或语句进行求值,并将求值结果打印到窗口。在 VB.NET 中,您必须输入完整的语句;你不能输入一个简单的表达式。在您的示例中,正如您发现的那样,如果您想将任何内容打印到窗口,则需要使用“打印”语句(别名是 ?)。

其中一个原因是语言的语义不同。正如 Bob Kaufman 提到的,= 可以是赋值运算符或相等性测试。如果 VB.NET 窗口像 c# 窗口一样工作,则无法确定 a = b 是“将 b 赋值给 a”还是“评估 b 是否等于 a”。

赋值在 VB.NET 中没有值; a = b = 4 表示“评估 b 是否等于 4,并将该评估的结果分配给 a。”这意味着 a 要么等于 true 要么等于 false。

在C#中,赋值也是一个带值的表达式,所以a = b = 4的意思是“将值4赋给b,并赋值表达式(b = 4)到一个。”这意味着 a 将等于 4。

关于c# - C# 和 VB.NET 中的即时窗口行为差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8160370/

相关文章:

c# - .NET 和数据库层

c# - 在 VSTO AddIn 中获取 Word 进程的键盘输入

c# - 如何在不使用 ClickOnce 的情况下让控制台应用程序检查更新?

asp.net - GridView 分页 - 第一个、最后一个、下一个、上一个

c# - 决定何时使用 XmlDocument 与 XmlReader

c# - 获取程序集而不实例化它们

vb.net - 尝试获取 IPv4 地址时无法在 vb 中创建 SSL/TLS 连接

c - 编辑链接列表中的配置文件

c++ - 在 parallel_for 中使用函数对象

c# - 如何在 visual studio WPF 中绑定(bind) "publish version"属性