Java中的?:运算符在VB.NET中怎么写?

8
在.NET中是否有等效于?:操作符的功能? 例如在Java中,我可以这样做:
retParts[0] = (emailParts.length > 0) ? emailParts[0] : "";

不是...而是...
if (emailParts.length > 0) {
    retParts[0] = emailParts[0];
} else {
    retParts[0] = "";
}

我希望你能够用VB.NET实现类似的功能。
1个回答

10

使用If操作符:

' data type infered from ifTrue and ifFalse
... = If(condition, ifTrue, ifFalse)     

这个运算符是在VB.NET 9中引入的(随 .net Framework 3.5 发布)。在早期版本中,您将不得不使用IIf函数(没有类型推断,也没有短路):

' always returns Object, always evaluates both ifTrue and ifFalse
... = IIf(condition, ifTrue, ifFalse)    

+1:请注意,VB 2008才支持此If运算符的变体,旧版本不支持。 - Dave Cluderay
因此,从本质上讲,如果是类型安全的,但仅适用于3.5+版本;而if不是类型安全的,但在所有版本中都适用? - themaninthesuitcase
"If" 是类型安全的,仅在3.5+版本中可用。 "IIf"(两个"I")不是类型安全的,并且在所有版本中都可用。 - Heinzi
1)'IIf' 会评估双方,试试 IIf(True, MsgBox("1"), MsgBox("2")),不像 'If' 它是一个关键字而不是函数。看一下 https://dev59.com/IHVD5IYBdhLWcg3wE3No#1120579 2)'If' 也被用作 ??cs 关键字,即 If(Nothing, variable)。 - Shimmy Weitzhandler

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接