获取锯齿状数组

时间:2016-01-21 15:10:35

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

我有一个声明的字节数组:

Dim commands As Byte()() 

数组稍后填充了一堆字节值,在我当前的测试中,它产生一个矩形的3x3数组(直线性是巧合的,数组可能包含任意长度的字节数组)。

commands = New Byte(3)(){}
'...
commands(i) = GetBytes(x)

稍后我还想获得锯齿状数组中总字节数的计数。我假设Array.Length会这样做,因为它的描述是

  

数组所有维度中元素的总数

然而,似乎实际只返回4;数组的第一个维度的计数,即GetLength(0)或行数。 Array.Count也返回相同的(即3)。

我是否正确理解Array.Length应返回的内容?如果我有,那为什么不返回9?

P.S:我尝试过使用其他大小的数组,Length肯定会返回GetLength(0) screenshot showing offending values

1 个答案:

答案 0 :(得分:1)

  

我是否正确理解了Array.Length应该返回什么?如果我有,那为什么不返回9?

不完全。顶级数组 只有3个元素,这是其Length属性报告的内容。只是那些元素碰巧是数组。

您需要循环(或编写linq查询等)以获取所有数组的总计数,例如:

Dim total as Integer = 0
For Each subarray as Byte() In commands
    total += subarray.Length
Next

你在这里遇到的另一个问题是你有一个数组数组,而不是一个多维数组,它将被声明为:

Dim commands as Byte(,)

现在这是一个单个数组,其中Length属性会返回所有元素的数量。