我有一个数组,我想知道每个数组的长度。
public int[][,] _EnemyPosition = new int[][,]
{
new int[,]{ {0},{1},{2},{3},{4}},
new int[,]{ {0,6},{1,7},{2,8},{3,9},{4,10}},
};
Debug.Log(_EnemyPosition.Length); // Output is 2
Debug.Log(_EnemyPosition[1].GetLength(0)); // Output is 5
但我无法得到
Debug.Log(_EnemyPosition[1][0].length);
它给我一个错误
error CS0022: Wrong number of indexes `1' inside [], expected `2'
我想知道如何获得这个数组的长度
_EnemyPosition[1][0].length
答案 0 :(得分:3)
var length = _EnemyPosition[0].Length; //returns 5 (5·1)
var length = _EnemyPosition[1].Length; //returns 10 (5·2)
这就是你想要的吗?您的要求远非明确:
我想知道如何获取此数组的长度:
_EnemyPosition[1][0].length
这不是数组,_EnemyPostion[1]
是二维数组[,]
。考虑以下模拟场景:
int[,] myTwoDimensionalArray = ...
var whatever = myTwoDimensionalArray[0]; //not valid, array dimensiones don't match.
因此,当您想要返回的长度时,我们有三个选项:
_EnemyPosition[1].Length
返回二维数组10
的总长度。_EnemyPosition[1].GetLength(0)
返回二维数组<{1}}的第一个维度的长度5
返回二维数组_EnemyPosition[1].GetLength(1)
的 second 维度的长度显然,2
次2
的结果是3
。那么,你想要哪一个?
答案 1 :(得分:3)
让我们解开阵列:你有
int[][,] _EnemyPosition
2d数组的数组 ;所以你可以打电话
_EnemyPosition.Length
总共是2d数组的数量;对于index
位置的每个2d数组,您可以调用
_EnemyPosition[index].GetLength(0)
_EnemyPosition[index].GetLength(1)
index
s 2d数组中每个维度(行和列)的长度。请注意,锯齿状阵列和 2d数组是不同的类型;这就是为什么你不能放
// doesn't compile
_EnemyPosition[1][0]
因为_EnemyPosition[1]
返回需要 2 索引的 2d数组(类似于_EnemyPosition[1][0,1]
)