首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果我将多维数组用于锯齿数组,如何获得它的宽度和高度?

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

Stack Overflow用户
提问于 2016-12-15 10:45:21
回答 2查看 1.6K关注 0票数 2

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

代码语言:javascript
复制
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

但我不能

代码语言:javascript
复制
 Debug.Log(_EnemyPosition[1][0].length);

它给我带来了一个错误

代码语言:javascript
复制
error CS0022: Wrong number of indexes `1' inside [], expected `2'

我想知道如何获得这个数组的长度。

代码语言:javascript
复制
_EnemyPosition[1][0].length
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-12-15 10:49:02

代码语言:javascript
复制
var length = _EnemyPosition[0].Length; //returns 5 (5·1)
var length = _EnemyPosition[1].Length; //returns 10 (5·2)

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

我想知道如何获得这个数组的长度:_EnemyPosition[1][0].length

这不是一个数组,_EnemyPostion[1]是一个二维数组[,]。考虑以下模拟情景:

代码语言:javascript
复制
int[,] myTwoDimensionalArray = ...
var whatever = myTwoDimensionalArray[0]; //not valid, array dimensiones don't match.

因此,当涉及到要返回的长度时,我们有三个选项:

  1. _EnemyPosition[1].Length,它返回二维数组10的总长度。
  2. _EnemyPosition[1].GetLength(0),它返回二维数组5的第一个维度的长度
  3. _EnemyPosition[1].GetLength(1),它返回二维数组2的第二维度的长度。

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

票数 3
EN

Stack Overflow用户

发布于 2016-12-15 11:02:47

让我们解开数组的纠结:

代码语言:javascript
复制
 int[][,] _EnemyPosition

它是一个由2d数组组成的数组,因此您可以调用

代码语言:javascript
复制
 _EnemyPosition.Length 

,即2d数组的总数;对于位于index位置的每个2d数组,您可以调用

代码语言:javascript
复制
 _EnemyPosition[index].GetLength(0)
 _EnemyPosition[index].GetLength(1)

它是index的2d数组中每个维度(行和列)的长度。请注意,交错数组和2d数组是不同的类型,这就是为什么不能

代码语言:javascript
复制
 // doesn't compile
 _EnemyPosition[1][0]

因为_EnemyPosition[1]返回2d数组,需要2索引(类似于_EnemyPosition[1][0,1])

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41162202

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档