以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- BUG收集 (http://foxtable.net/bbs/list.asp?boardid=12) ---- iif的bug探析 (http://foxtable.net/bbs/dispbbs.asp?boardid=12&id=38607) |
-- 作者:ztmdnzc -- 发布时间:2013/8/2 12:37:00 -- iif的bug探析 Dim Vals() As String = e.Node.Fullname.Split(".") \'用fullname,分隔符为"." 情况一: 出错的代码:vals(0)=1 时,第一个MessageBox能够执行,后三个MessageBox出错,=2时,后两个出错,=3时,最后一个出错。 If va<=4 Then
情况二: 改成如下代码,vals(0)=1 ,2,3,4时,全部能够执行。 If va<=4 Then MessageBox.Show(iif(va>=1,drs(4*va-4)("文件名") & "| " & drs(4*va-4)("修改时间") & "| " & drs(4*va-4)("文件大小"),"")) MessageBox.Show(iif(va>=3,"t","w"))
参考帮助,iif在条件不成立时情况一中应该等于"",在情况二中等于w,情况二能够执行,情况一却出错,其原因是在条件不成立时iif却仍对drs(4*va-3)("文件名") & "| " & drs(4*va-3)("修改时间") & "| " & drs(4*va-3)("文件大小")进行运算,而不是直接等于"",情况二中t,w是不需要运算的,所以能够执行。 根据以上分析,iif存在条件不成立时仍对truevalue进行运算而不是直接等于falsevalue的bug,建议狐爸改进。 |
-- 作者:有点甜 -- 发布时间:2013/8/2 18:59:00 -- iif函数的特性就是这样的,无论是否成立,都会对表达式进行求值的。 如果有特殊的需要,可以改用if else 语句代替。
|