vb.net - IIf抛出奇怪的异常

Phi*_*hil 4 vb.net ternary-operator iif

我有一个奇怪的问题.当我使用数组时,IIf正在搞乱.显然它正在检查我的其他声明,即使它没有被激活.以下是一些演示此问题的代码:

'works
 Dim test As String = "bleh"
 If values.Length < 6 Then
   test = "200"
 Else
   test = values(5)
 End If

 'throws indexoutofrange exception
 Dim itemLimit As String = IIf(values.Length < 6, "200", values(5))
Run Code Online (Sandbox Code Playgroud)

Jar*_*Par 9

Iif运营商没有实现短路并将评价都真假情况.如果你想要一个短路版本,那么使用If.

Dim itemLimit As String = If(values.Length < 6, "200", values(5))
Run Code Online (Sandbox Code Playgroud)