布尔 VB 表达式为整数 1 返回 false
Posted
技术标签:
【中文标题】布尔 VB 表达式为整数 1 返回 false【英文标题】:boolean VB expression returning false for integer 1 【发布时间】:2011-01-17 19:34:59 【问题描述】:这可能是一个非常基本(没有双关语)的问题,但我似乎无法在任何地方找到答案。为什么func1的结果返回False而func2返回True?在我所做的所有其他测试中,整数 1 被转换为布尔值 true,0 被转换为 false。如果我将 rtnValue 设置为 1 或 0,则可以正常工作。
Public Function func1() As Boolean
Dim rtnValue As Integer = 0
Return rtnValue = 1
End Function
Public Function func2() As Boolean
Dim rtnValue As Integer = 0
Return rtnValue = 0
End Function
【问题讨论】:
= 运算符既可以在赋值语句中使用,也可以在表达式中用作相等运算符。您正在获取表达式版本。 1 = 0 为假。 【参考方案1】:相信你在"Return rtnValue = 1"中所做的其实是比较rtnValue是否等于1,而不是设置rtnValue为1然后返回rtnValue。
【讨论】:
【参考方案2】:您正在危险地混淆类型。在 VB 中,整数 1 是整数 1,而不是布尔值 true。整数 0 和布尔值 false 也是如此。
此外,您的 func1() 正在检查 rtnValue 是否等于 1。如果是,则您的函数返回 true。如果不是,则返回 false。在您的情况下,您将 rtnValue 设置为 0,并且由于 0 不等于 1,因此它返回 false。
您的 func2() 返回 true,因为 rtnValue 等于 0,这是您正在测试的内容。
【讨论】:
这种“类型混合”的发生,我相信,多亏了 C。对于 C 编程语言,任何 eval 为零的都是假的,任何 eval 非零的都是真的。【参考方案3】:您正在重新调整表达式检查,它会出现。因此,当Return rtnValue = 0
时,它将报告为true
,因为rtnValue
确实是0
。
【讨论】:
以上是关于布尔 VB 表达式为整数 1 返回 false的主要内容,如果未能解决你的问题,请参考以下文章
vb中怎么把数据由string型转化为single或者double型?
为啥var i=0;if(i)进不去?i=0又不是i="false"