IIf函数在计算表达式时解析true部分和false部分。我错过了什么吗?试试这句话,让我知道!!
示例:
Dim sample = ""
Dim result = IIf(String.IsNullOrWhiteSpace(sample), 0, Integer.Parse(sample))
Exception = "Input string was not in a correct format."修复:
Dim result = Integer.Parse(IIf(String.IsNullOrWhiteSpace(sample), 0, sample))http://msdn.microsoft.com/en-us/library/27ydhh0d(v=VS.71).aspx
发布于 2012-01-03 19:40:15
摘自您链接到的MSDN文档:
作为准备调用IIf的参数列表的一部分,Visual Basic编译器调用每个表达式中的每个函数。这意味着,如果按表达式选择了另一个参数,则不能依赖于未调用的特定函数。
这可能是相当意想不到的行为,设计可能有缺陷,但基本上你的假设被证明是正确的。
发布于 2012-01-03 19:45:01
Iif计算其所有参数的做法是正确的。这只是一个函数,所以它无法避免。
但是,VB.net使用If操作符也有一段时间了。从表面上看,它类似于Iif,但由于它内置于语言中,因此它不受函数的限制。它可以短路--只有条件和正确的表达式才会被计算。所以,实际上,它更像是C#的?:操作符。
result = If(String.IsNullOrWhiteSpace(sample), 0, Integer.ParseInt(sample))或者,在这种情况下,您可以满足于
Dim result as Integer
Integer.TryParse(sample, result)如果不能解析数字,它会将result设置为0。
https://stackoverflow.com/questions/8711698
复制相似问题