这是VB 6中某些属性的正则表达式:
iif (integervariable, 0, 1)
如果我想知道iif如何在没有任何逻辑比较的情况下解析整数参数?
答案 0 :(得分:6)
这不是一个正则表达式,它是一个函数调用,IIf
是函数。
可以在VB中的布尔上下文中使用整数变量。在这种情况下,0
会转换为False
而非零转换为True
。
答案 1 :(得分:4)
这是IIf
功能。检查一下this documentation。
通常,在这种编程语言中,0表示False
以及True
的任何其他内容。
在任何情况下,“你永远不应该编写依赖于True和False的等效数值的代码。” (MSDN) 检查“布尔类型不能准确转换为数字类型”中的here以获取更多信息。
希望这有帮助。
答案 2 :(得分:1)
GSerg和SysDragon有一些很好的答案。 我只想添加一件未提及的内容:
每当你有IIF或IF没有逻辑比较时,如
IIf (integervariable, 0, 1)
或
If (integervariable) Then ...
与True
的逻辑比较是隐含的。所以
IIf (integervariable, 0, 1)
与
相同IIf (CBool(integervariable) = True, 0, 1)
和
If (integervariable) Then ...
与
相同If (CBool(integervariable) = True) Then ...
请注意:正如SysDragon所提到的,你绝不应该依赖将数值与布尔值进行比较的代码。这就是原因:
Print IIF(CInt("123"), True, False)
是True
Print IIF(CBool("True"), True, False)
也是True
因此,当比较它们时,人们会假设结果为True。但实际上,
Print IIF(CInt("123") = CBool("True"), True, False)
出现为False
这个例子的道德是,如果integervariable
是一个整数(或任何其他不是布尔值的数据类型),那么最佳做法是进行逻辑比较。在您的情况下,而不是IIf (integervariable, 0, 1)
使用IIf (integervariable <> 0, 0, 1)
。结果是相同的,没有潜在的不可预测的结果。