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默认值>选项严格设置.请注意,很难切换回来:) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |