我有一个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属性,但是如何正确实现呢? 感谢。
答案 0 :(得分:2)
而不是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();
}