2

在 VS2008 版本的 VB 编译器中,始终返回对象且不短路的IIf方法已被新的短路类型推断If运算符取代:

Dim x = IIf(True, "a", "b")   ' yields an Object
Dim y = If(True, "a", "b")    ' yields a String

Choose该方法是否有类似的现代替代品(即短路的类型推断版本)?还是不应该再使用的兼容性遗物?

Dim x = Choose(1, "a", "b", "c")   ' yields an Object
Dim y = ...?
4

1 回答 1

4

没有内置函数,但您可以轻松实现自己的:

Function Choose(Of T)(index As Integer, ParamArray args As T()) As T
   If index < 1 OrElse index > args.Length Then
      Return Nothing
   Else
      Return args(index - 1)
   End If
End Function

试试看

Dim y = Choose(1, "a", "b", "c")   ' yields an string
于 2013-07-12T15:36:53.013 回答