如果我将它用于 Jagged Arrays,如何获得多维数组的宽度和高度?

How do you get the width and height of a multi-dimensional array if i use it into Jagged Arrays?

我有一个数组,我想知道每个数组的长度。

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
var length = _EnemyPosition[0].Length; //returns 5 (5·1)
var length = _EnemyPosition[1].Length; //returns 10 (5·2)

这是你想要的吗?您的要求还很不明确:

i want to know how to get length of this array: _EnemyPosition[1][0].length

那不是数组,_EnemyPostion[1]是二维数组[,]。考虑以下模拟场景:

int[,] myTwoDimensionalArray = ...
var whatever = myTwoDimensionalArray[0]; //not valid, array dimensiones don't match.

所以,当涉及到您想要返回的长度时,我们有三种选择:

  1. _EnemyPosition[1].Length其中returns二维数组的总长度10.
  2. _EnemyPosition[1].GetLength(0)其中returns二维数组维的长度5
  3. _EnemyPosition[1].GetLength(1)其中returns二维数组second维度的长度2

显然 23 的结果是 1。那么,你想要哪一个?

让我们解开数组:你有

 int[][,] _EnemyPosition

这是二维数组数组;这样你就可以打电话给

 _EnemyPosition.Length 

这是二维数组的总数;对于 index 位置的每个二维数组,您可以调用

 _EnemyPosition[index].GetLength(0)
 _EnemyPosition[index].GetLength(1)

这是 index 二维数组中 每个维度 (行和列)的长度。请注意,jagged array2d array 是不同的类型;这就是为什么你不能把

 // doesn't compile
 _EnemyPosition[1][0]

因为 _EnemyPosition[1] returns 2d array 需要 2 索引(类似于 _EnemyPosition[1][0,1] )