检查多维数组是否有锯齿状?

时间:2013-07-09 19:44:35

标签: vb.net jagged-arrays multidimensional-array

vb.net是否有内置函数来检查作为Function参数传递的用户的未知形状的多维数组是否是锯齿状的?如果是这样,它是什么?

2 个答案:

答案 0 :(得分:1)

这里有两个问题。多维数组(定义为Integer(,))永远不会“锯齿状”。您可以通过检查数组的Rank来检测到这一点。 GetLowerBoundGetUpperBound方法可用于根据需要检查各个维度的长度。

如果您正在查看Jagged数组(即:Integer()())是否已完全初始化,并且每个子数组的长度相同(即:确定锯齿状数组是否为“逻辑”矩形),可以使用类似的东西:

Dim initializedToSameLengths As Boolean
If theArray(0) Is Nothing Then
   ' If first element is null, check for all others being null
   initializedToSameLengths = theArray.All(Sub(a) a = Nothing)
Else
   Dim firstLength = theArray(0).Length
   initializedToSameLengths = theArray.All(Sub(a) a <> Nothing AndAlso a.Length = firstLength)
End If

答案 1 :(得分:1)

如果数组是多维的,则它将具有多个维度(因此Array.Rank属性将为>1)。如果数组是锯齿状的,那么它将是一个以数组为元素的一维数组(因此它的Array.Rank属性将为=1)。