C# 如果我将多维数组用于锯齿状数组,如何获得其宽度和高度?
我有一个数组,我想知道每个数组的长度C# 如果我将多维数组用于锯齿状数组,如何获得其宽度和高度?,c#,unity3d,multidimensional-array,jagged-arrays,C#,Unity3d,Multidimensional Array,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));
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
这就是你想要的吗?你的要求还很不明确:
我想知道如何获取此数组的长度:\u EnemyPosition[1][0]。长度
这不是一个数组,\u enemyposition[1]
是一个二维数组。考虑下面的模拟场景:
int[,] myTwoDimensionalArray = ...
var whatever = myTwoDimensionalArray[0]; //not valid, array dimensiones don't match.
因此,对于要返回的长度,我们有三个选项:
\u EnemyPosition[1]。Length
返回二维数组的总长度10
\u EnemyPosition[1]。GetLength(0)
返回二维数组的第一个维度的长度5
\u EnemyPosition[1].GetLength(1)
返回二维数组第二维的长度2
显然,
2
次3
的结果是1
。那么,你想要哪一个呢?让我们解开数组:你有
int[][,] _EnemyPosition
它是一个二维数组的数组;所以你可以打电话
_EnemyPosition.Length
这是2d阵列的总数;对于位于索引
位置的每个2d数组,您可以调用
_EnemyPosition[index].GetLength(0)
_EnemyPosition[index].GetLength(1)
这是index
s 2d数组中每个维度(行和列)的长度。请注意,锯齿阵列和2d阵列是不同的类型;这就是为什么你不能把
// doesn't compile
_EnemyPosition[1][0]
因为
\u EnemyPosition[1]
返回需要2索引的2d数组(类似于\u EnemyPosition[1][0,1]
)因为\u EnemyPosition
是int[],你不能用\u EnemyPosition[1][0]
调用它-它必须类似于\u EnemyPosition 1][0,0]
。这就是错误告诉你的。非常感谢先生非常有用谢谢先生非常有用:)
// doesn't compile
_EnemyPosition[1][0]