加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-17 07:12:15 所属栏目:百科 来源:网络整理
导读:在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默认值>选项严格设置.请注意,很难切换回来:)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读