Печать матрицы NxNxN

У меня есть код генерации матрицы NxNxN следующим образом:

namespace Physics
{ class _3DMatrix { public int[, ,] m; public _3DMatrix(int size1, int size2, int size3, int a) { m = new int[size1, size2, size3]; for (int x = 0; x < size; x++) { for (int y = 0; y < size; y++) { for (int z = 0; z < size; z++) { m[x, y, z] = a; } } } } public void Print() { for (int x = 0; x < m.Rank; x++) { for (int y = 0; y < m.Rank; y++) { for (int z = 0; z < m.Rank; z++) { Console.Write("{0} ", m[x, y, z]); } Console.WriteLine(); } Console.WriteLine(); } Console.ReadKey(); } }
}

Я реализовал функцию печати, которая не может напечатать правильную матрицу. Как я должен написать правильную функцию печати для матрицы любого измерения?

Вот как я называю матрицу:

_

3DMatrix m = new _3DMatrix(5, 4, 3, 0);
m.Print();

Я должен получить все нули в 3 матрицах s1xs2, однако я получаю здесь образец вывода:

0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0

Я понимаю, что проблема связана с тем, что я использую свойство rank, но как правильно его реализовать? Благодарю.

1 ответ

Вместо Rank используйте GetLength.

Согласно MSDN:

Получает 32-разрядное целое число, которое представляет количество элементов в указанном размере массива.

for (int x = 0; x < m.GetLength(0); x++)
{ for (int y = 0; y < m.GetLength(1); y++) { for (int z = 0; z < m.GetLength(2); z++) { Console.Write("{0} ", m[x, y, z]); } Console.WriteLine(); } Console.WriteLine(); }

licensed under cc by-sa 3.0 with attribution.