哪个更快?我试过谷歌搜索,甚至无法找到任何有助于我自己解决这个问题的东西。我得到的最好的就是这个简单的DotNetFiddle:https://dotnetfiddle.net/i6Yx6R
答案 0 :(得分:1)
UBound
只是在内部调用Array.GetUpperBound
,因此它们的实现几乎相同:
Public Function UBound(ByVal Array As System.Array, Optional ByVal Rank As Integer = 1) As Integer
If (Array Is Nothing) Then
Throw VbMakeException(New ArgumentNullException(GetResourceString(ResID.Argument_InvalidNullValue1, "Array")), vbErrors.OutOfBounds)
ElseIf (Rank < 1) OrElse (Rank > Array.Rank) Then
Throw New RankException(GetResourceString(ResID.Argument_InvalidRank1, "Rank"))
End If
Return Array.GetUpperBound(Rank - 1)
End Function
这是从微软的reference source获得的。
两者之间的区别肯定是几乎无法估量的,但我怀疑UBound
会因为它首先进行一些边界检查而略微缓慢。
实际上,因为他们的实际实现是相同的,我会使用你更习惯使用风格。