如何为三维数组的索引赋值?

时间:2015-12-15 09:20:02

标签: c# arrays

我已将两个三维数组定义为:

int[, ,] Link_k = new int[length1, length1, length1];
int[][][] Link_k2 = new int[length1][][];

其中length1是可变的,可以是任何整数。

我的问题是如何为特殊索引或所有第一个索引分配值。我试过了

Link_k.SetValue(-1,(0,,));
Link_k2.SetValue(-1,[0][][]);

但那不会编译。

2 个答案:

答案 0 :(得分:1)

如果要设置每个Z轴数组的第一个索引,则必须使用for进行迭代。

Link_k

for (int x = 0; x < Array.GetUpperBound(Link_k, 0); x++)
{
    for (int y = 0; i < Array.GetUpperBound(Link_k, 1); y++)
    {
        Link_k[x, y, 0] = -1;
    }
}

对于Link_k2

int[][][] Link_k2 = new int[length1][][];

for (int x = 0; x < Link_k2.Length; x++)
{
    Link_k2[x] = new int[length1][];
    for (int y = 0; i < Link_k2[x].Length; y++)
    {
        Link_k2[x][y] = new int[length1];
        Link_k2[x][y][0] = -1;
    }
}

(注意,你似乎没有分配第二个和第三个数组。在for循环中分配它,所以你在每个数组中分配每个数组,等等,所以我也把它放在了)

答案 1 :(得分:1)

正如@Patrick Hofman所说,Link_k非常简单:

Link_k[x, y, 0] = -1;

或者,使用SetValue

Link_k.SetValue( -1, x, y, 0 );

但是,实际上并没有为Link_k2创建三维数组 - 您创建了一个数组数组的一维数组。例如。 Link_k2[0]int[][],初始化时,Link_k2[0][0]int[]

因此,对于Link_k2,您需要:

for (int x = 0; x < Link_k2.Length; x++)
{
    //create a new array of arrays at Link_k2[x]
    Link_k2[x] = new int[length1][];
    for (int y = 0; y < Link_k2[x].Length; y++)
    {
        //create a new arrays at Link_k2[x][y]
        Link_k2[x][y] = new int[length1];
        for (int z = 0; z < Link_k2[x][y].Length; z++)
        {
            Link_k2[x][y][z] = -1;
        }
    }
}