这类似于vb.net中的三元运算符吗?

Xai*_*oft 2 vb.net

我在一些vb.net源代码中看到了这个:

Dim sTest As String = "" & drTest("column")
Run Code Online (Sandbox Code Playgroud)

我被告知如果drTest("列")什么都没有,那么sTest将被分配"",所以它实际上是这样做的:

Dim sTest As String = If("",Nothing,drTest("column"))
Run Code Online (Sandbox Code Playgroud)

这是我展示的第一种方式的缺点是什么?

使用If和IIf有什么区别?

Kon*_*lph 7

If 是三元条件运算符.

使用If和IIf有什么区别?

IIf 是一个普通的函数,大致如下实现:

Function If(Of T)(condition As Boolean, ifTrue As T, ifFalse As T)
    If condition Then Return ifTrue
    Return ifFalse
End Function
Run Code Online (Sandbox Code Playgroud)

这意味着无论其值如何condition,都会始终评估其他参数.If操作员不会发生这种情况.

但是你的代码实际上做的事情完全不同:

Dim sTest As String = If("",Nothing,drTest("column"))
Run Code Online (Sandbox Code Playgroud)

这没有任何意义,甚至不应该编译(或至少给出警告).你的第一个代码很好 - 它始终有效并且没有任何缺点.目前尚不清楚第二个代码甚至试图实现什么.