gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 07:45:14 25 4
gpt4 key购买 nike

我注意到在调试 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com