2016-12-15 3 views
2

У меня есть массив, где я хочу знать каждую длину массива.Как получить ширину и высоту многомерного массива, если я использую его в массивах Jagged?

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 
+2

Поскольку '_EnemyPosition' является' ИНТ [] [,] 'вы можете 't называть его '_EnemyPosition [1] [0]' - он должен быть чем-то вроде '_EnemyPosition [1] [0,0]'. Это то, о чем вам говорит ошибка. – Enigmativity

ответ

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. 

Итак, у нас есть три варианта, когда дело доходит до длины вы хотите вернулся:

  1. _EnemyPosition[1].Length, которая возвращает общую длину двумерного массива 10.
  2. _EnemyPosition[1].GetLength(0) который возвращает длину первого размерности двумерного массива 5
  3. _EnemyPosition[1].GetLength(1) который возвращает длину второго размерности двумерного массива 2

и, очевидно, результатом от 2 раз 3 - 1. Итак, какой из них вы хотите?

+0

Спасибо вам большое, сэр Very Helpfull –

3

Давайте распутать массивы: у вас есть

int[][,] _EnemyPosition 

который является массив из 2d массивов; поэтому вы можете позвонить по телефону

_EnemyPosition.Length 

который является числом из 2-х массивов в общей сложности; для каждого 2d массива в index положения можно назвать

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

которые являются длинами каждого размеры (строк и столбцов) в пределах index сек 2d массива.Обратите внимание, что jagged array и 2d array - это разные типы; Вот почему вы не можете поставить

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

с момента _EnemyPosition[1] возвращает 2d массив который хочет индексов (что-то вроде _EnemyPosition[1][0,1])

+0

Спасибо, сэр. Очень понравилось :) –