这是 VB 6 中某些属性的正则表达式:
iif (integervariable, 0, 1)
如果是我想知道 iif 如何在没有任何逻辑比较的情况下解析整数参数?
它不是正则表达式,而是函数调用,IIf
是函数。
可以在 VB 的布尔上下文中使用整数变量。在这种情况下,0
转换为False
非零到True
。
这就是IIf
功能。检查有关它的文档。
通常,在这种编程语言中,0False
代表True
.
无论如何,“你永远不应该编写依赖于 True 和 False 的等效数值的代码。” (MSDN)在“布尔类型不能准确地转换为数字类型”中查看此处以获取更多信息。
希望这可以帮助。
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)
。结果是相同的,没有潜在的不可预测的结果。