微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

在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认值>选项严格设置.请注意,很难切换回来:)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐