我有一个声明的字节数组:
Dim commands As Byte()()
数组稍后填充了一堆字节值,在我当前的测试中,它产生一个矩形的3x3数组(直线性是巧合的,数组可能包含任意长度的字节数组)。
commands = New Byte(3)(){}
'...
commands(i) = GetBytes(x)
稍后我还想获得锯齿状数组中总字节数的计数。我假设Array.Length
会这样做,因为它的描述是
数组所有维度中元素的总数
然而,似乎实际只返回4;数组的第一个维度的计数,即GetLength(0)
或行数。 Array.Count
也返回相同的(即3)。
我是否正确理解Array.Length
应返回的内容?如果我有,那为什么不返回9?
答案 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
属性会返回所有元素的数量。