首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IIf函数解析

IIf函数解析
EN

Stack Overflow用户
提问于 2012-01-03 19:37:03
回答 2查看 278关注 0票数 0

IIf函数在计算表达式时解析true部分和false部分。我错过了什么吗?试试这句话,让我知道!!

示例:

代码语言:javascript
复制
 Dim sample = ""
 Dim result = IIf(String.IsNullOrWhiteSpace(sample), 0, Integer.Parse(sample))
 Exception = "Input string was not in a correct format."

修复:

代码语言:javascript
复制
 Dim result = Integer.Parse(IIf(String.IsNullOrWhiteSpace(sample), 0, sample))

http://msdn.microsoft.com/en-us/library/27ydhh0d(v=VS.71).aspx

EN

回答 2

Stack Overflow用户

发布于 2012-01-03 19:40:15

摘自您链接到的MSDN文档:

作为准备调用IIf的参数列表的一部分,Visual Basic编译器调用每个表达式中的每个函数。这意味着,如果按表达式选择了另一个参数,则不能依赖于未调用的特定函数。

这可能是相当意想不到的行为,设计可能有缺陷,但基本上你的假设被证明是正确的。

票数 3
EN

Stack Overflow用户

发布于 2012-01-03 19:45:01

Iif计算其所有参数的做法是正确的。这只是一个函数,所以它无法避免。

但是,VB.net使用If操作符也有一段时间了。从表面上看,它类似于Iif,但由于它内置于语言中,因此它不受函数的限制。它可以短路--只有条件和正确的表达式才会被计算。所以,实际上,它更像是C#的?:操作符。

代码语言:javascript
复制
result = If(String.IsNullOrWhiteSpace(sample), 0, Integer.ParseInt(sample))

或者,在这种情况下,您可以满足于

代码语言:javascript
复制
Dim result as Integer
Integer.TryParse(sample, result)

如果不能解析数字,它会将result设置为0。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8711698

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档