Vb.net 这是VB6:iif(整数变量,0,1)中某些属性的正则表达式吗?
这是VB 6中某些属性的正则表达式:Vb.net 这是VB6:iif(整数变量,0,1)中某些属性的正则表达式吗?,vb.net,vb6,integer,iif,Vb.net,Vb6,Integer,Iif,这是VB 6中某些属性的正则表达式: iif (integervariable, 0, 1) 如果是,我想知道iif如何在没有任何逻辑比较的情况下解析整型参数?它不是正则表达式,而是函数调用,函数为iif 在VB中,可以在布尔上下文中使用整数变量。在这种情况下,0转换为False,非零转换为True,这就是IIf函数。查一查 通常,在这种编程语言中,0表示False,其他任何值表示True 在任何情况下,“您都不应该编写依赖于等效数字值的True和False的代码。”(MSDN) 有关详细信息
iif (integervariable, 0, 1)
如果是,我想知道iif如何在没有任何逻辑比较的情况下解析整型参数?它不是正则表达式,而是函数调用,函数为
iif
在VB中,可以在布尔上下文中使用整数变量。在这种情况下,
0
转换为False
,非零转换为True
,这就是IIf
函数。查一查
通常,在这种编程语言中,0表示False
,其他任何值表示True
在任何情况下,“您都不应该编写依赖于等效数字值的True和False的代码。”(MSDN) 有关详细信息,请签入“布尔类型不能准确转换为数字类型”
希望这能有所帮助。GSerg和SysDragon有一些好的答案。 我只想补充一件没有提到的事情: 当你有IIF或IF时,没有逻辑比较,例如
IIf (integervariable, 0, 1)
或
隐含了与True
的逻辑比较。所以
IIf (integervariable, 0, 1)
与
IIf (CBool(integervariable) = True, 0, 1)
及
与
If (CBool(integervariable) = True) Then ...
请注意:正如SysDragon提到的,您永远不应该依赖于将数值与布尔值进行比较的代码。这就是为什么:
Print IIF(CInt(“123”),True,False)
为True
Print IIF(CBool(“True”)、True、False)
也是True
因此,当比较两者时,人们会假设结果是正确的。但事实上,
Print IIF(CInt(“123”)=CBool(“真”),真,假)
显示为False
这个例子的寓意是,如果
integervariable
是一个整数(或任何其他不是布尔值的数据类型),那么最好进行逻辑比较。在您的情况下,使用IIf(整数变量0,0,1)
代替IIf(整数变量0,0,1)
。结果相同,没有潜在的不可预测结果。搜索正则表达式
,然后搜索msdn iif vb6
。+1。顺便说一句,我编辑了你的链接,指向IIf上的英文VB6文档。你原来的链接是西班牙VB.Net文档:)@MarkJ谢谢。有时我的大脑没有意识到他在读什么语言P“您永远不应该编写依赖于等效数值表示真和假的代码。”来自MSDN,对吗?我不同意,因为逐位运算的计算结果是一个数值,即Dim I作为整数I=4和6'4
如果I then foo()else bar()
我的示例相当于一个常见的逐位掩码运算,即如果(4和6)那么foo()else bar()
数值布尔值应该被解开。程序员需要理解@SysDragon指出的关于0=False和其他任何=True的内容。
If (integervariable) Then ...
If (CBool(integervariable) = True) Then ...