当前位置 : 主页 > 编程语言 > c语言 >

vb.net – If 1 = 2 = 3然后(…)如何工作

来源:互联网 收集:自由互联 发布时间:2021-06-24
在VB.NET中进行编码时,我意外地在我的代码中写了这样的东西; Dim a as integer = 1Dim b as Integer = 2Dim c as Integer = 3If a = b = c Then '.. some CodeEnd if 它没有给我一个错误,所以看起来它是我不知道的
在VB.NET中进行编码时,我意外地在我的代码中写了这样的东西;

Dim a as integer = 1
Dim b as Integer = 2
Dim c as Integer = 3
If a = b = c Then
 '.. some Code
End if

它没有给我一个错误,所以看起来它是我不知道的编程语言(或编程本身)的一部分.

我的问题:

这个语句如何工作以及这个代码用例的好例子是什么?

编辑:

调暗为整数= 1 = 2 = 3

这条线也没有给我一个错误. MsgBox(a)显示0

答案:

您可以在问题评论中找到它.

是,使用Option Strict Off(默认值)作为有效表达式.在那种模式下,VB.NET(几乎)就像Javascript,Python或Ruby一样的动态语言.编译器会根据需要发出转换,使表达式有效,可以在字符串,布尔值和数字类型之间轻松转换.

表达式从左到右评估,换句话说(a = b)= c. a = b子表达式生成布尔值,需要将其转换为整数以使其与c有效进行比较. False产生0,True产生-1.这不是一个拼写错误,这是VB仍然在很大程度上基于COM自动化的遗产的一部分.

最终的表达式类型再次为布尔值.请注意您的第二个语句如何要求转换为Integer.由于具有给定值的a = b总是产生False,因此0 = c将始终为False.

使用Option Strict On时,编译器不再应用这些自动转换并在此语句上生成错误.它坚持使用CInt()来转换布尔子表达式.总是很好,发现你弄乱了表达.

您可能应该考虑更改默认值,如果经常发生这样的错误.使用工具>选项>项目和解决方案> VB默认值>选项严格设置.请注意,很难切换回来:)

网友评论