2013-07-09 2 views

ответ

1

Здесь есть две проблемы. Многомерные массивы (определенные как Integer(,)) никогда не «зубчатые». Вы можете обнаружить это, проверив массив Rank. Методы GetLowerBound и GetUpperBound могут использоваться для проверки длины отдельных измерений по мере необходимости.

Если вы хотите проверить, полностью ли инициализирован массив 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 
+0

ty для '(,)' 'никогда '' зубчатый ''! (так как я инициализирую 2d в 'WebMethod') –

1

Если массив многомерный, он будет иметь более чем на 1 размер (так Array.Rank свойство будет >1). Если массив неровный, он будет одномерным массивом с массивами в качестве элементов (поэтому его свойство Array.Rank будет =1).

+1

Обратите внимание, что Array.Rank, являющийся одним, может быть одномерным, не-зубчатым массивом. –

Смежные вопросы