我无法理解3D阵列的正确使用方法。我正在使用C#。我的主要困惑是哪个索引是Z索引。不幸的是,我做了很多谷歌搜索,但我能找到的大部分信息都是关于2D数组的。然而,Youtube上的这个人说第三个指数是Z:https://mavericksondarby.com.au/assets/css/eleganticons.css
根据该教程,在以下情况下:
public string[,,] array3DString = new string[2, 5, 6];
2 = x,5 = y,并且6 = z。
起初这是有道理的,但后来我尝试通过循环填充数组以给自己一个视觉理解:它帮助我直观地看待事物。所以我写了这个简单的程序:
class Test
{
public string[,,] array3DString = new string[2, 5, 5];
public void SetArray3DString()
{
for (int zIndex = 0; zIndex < 2; zIndex++)
{
for (int r = 0; r < 5; r++)
{
for (int c = 0; c < 5; c++)
{
array3DString[zIndex, r, c] = "z" + zIndex + "r" + r + "c" + c;
}
}
}
}
public void PrintArray3DString()
{
for (int zIndex = 0; zIndex < 2; zIndex++)
{
Console.WriteLine("Z Index - " + zIndex);
for (int r = 0; r < 5; r++)
{
for (int c = 0; c < 5; c++)
{
if (c < 4)
{
Console.Write(array3DString[zIndex, c, r] + ",");
}
else
{
Console.WriteLine(array3DString[zIndex, c, r]);
}
}
}
}
}
}
class Program
{
static void Main(string[] args)
{
Test newTest = new Test();
newTest.SetArray3DString();
newTest.PrintArray3DString();
while (true);
}
}
在我看来,当我尝试使用循环迭代3D数组时,第一个索引为Z更有意义,因为当然,外循环是最后一个被索引的循环。输出是这样的:
Z Index - 0
z0r0c0,z0r1c0,z0r2c0,z0r3c0,z0r4c0
z0r0c1,z0r1c1,z0r2c1,z0r3c1,z0r4c1
z0r0c2,z0r1c2,z0r2c2,z0r3c2,z0r4c2
z0r0c3,z0r1c3,z0r2c3,z0r3c3,z0r4c3
z0r0c4,z0r1c4,z0r2c4,z0r3c4,z0r4c4
Z Index - 1
z1r0c0,z1r1c0,z1r2c0,z1r3c0,z1r4c0
z1r0c1,z1r1c1,z1r2c1,z1r3c1,z1r4c1
z1r0c2,z1r1c2,z1r2c2,z1r3c2,z1r4c2
z1r0c3,z1r1c3,z1r2c3,z1r3c3,z1r4c3
z1r0c4,z1r1c4,z1r2c4,z1r3c4,z1r4c4
这是我期望看到的。当我尝试制作最后一个索引Z时,我只是把自己搞糊涂了。
我是对的,还是Youtube视频中的人呢?哪个指数应该是Z,为什么?它甚至重要吗?
作为参考,我也尝试过这个网站:https://www.youtube.com/watch?v=Eqo552n1DSc 但他们又一次专注于2D阵列,并没有回答这个简单的问题。
提前感谢您的帮助。
答案 0 :(得分:0)
关于如何存储它没有规则。它是关于如何在内存中序列化的。
填写和打印时,您的代码有所不同:
填料:
array3DString[zIndex, r, c] <--- r = 2nd index..
印刷:
array3DString[zIndex, c, r] <--- r = 3rd index..
因此,只要c和r的尺寸相等
,这就不会崩溃