是否有类型安全版本的Choose()?

时间:2013-07-12 15:12:20

标签: vb.net

在VB编译器的VS2008版本中,IIf method总是返回一个对象并且没有短路,已被新的短路类型推断If operator所取代。 :

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

Choose method是否有类似的,现代的替代品(即短路,类型推断版)?或者它是不再使用的兼容性遗物?

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

1 个答案:

答案 0 :(得分: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