You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在C#中创建每行包含3个数组的多维数组?

实现每行3个小数组的三维结构数组

嘿,我来帮你搞定这个需求!你想要的其实是一个三维层级的数组结构——简单说就是「数组里装着数组,而这些数组里又装着int数组」。下面给你两种最常用的实现方式,适配不同的场景:

1. 规整三维数组(Rectangular Array)

因为你的结构非常规整:3行 × 每行3个数组 × 每个数组3个int,用C#的三维矩形数组是最直接的选择,它的内存是连续分配的,访问效率也高。

实现代码

// 直接声明并初始化整个三维数组
int[,,] threeDArray = new int[3, 3, 3]
{
    {
        {1, 2, 3},   // 第一行的第一个小数组
        {4, 5, 6},   // 第一行的第二个小数组
        {7, 8, 9}    // 第一行的第三个小数组
    },
    {
        {10, 11, 12}, // 第二行的第一个小数组
        {13, 14, 15}, // 第二行的第二个小数组
        {16, 17, 18}  // 第二行的第三个小数组
    },
    {
        {19, 20, 21}, // 第三行的第一个小数组
        {22, 23, 24}, // 第三行的第二个小数组
        {25, 26, 27}  // 第三行的第三个小数组
    }
};

// 访问示例:取第二行第三个小数组的第二个元素(索引从0开始)
int value = threeDArray[1, 2, 1]; // 结果是17

如果你想分步初始化(像你原来的交错数组那样),也可以这么写:

int[,,] threeDArray = new int[3, 3, 3];

// 给第一行的三个小数组赋值
threeDArray[0, 0] = new int[] {1, 3, 5};
threeDArray[0, 1] = new int[] {2, 4, 6};
threeDArray[0, 2] = new int[] {7, 8, 9};

// 给第二行赋值
threeDArray[1, 0] = new int[] {0, 2, 4};
threeDArray[1, 1] = new int[] {1, 3, 5};
threeDArray[1, 2] = new int[] {6, 7, 8};

// 给第三行赋值
threeDArray[2, 0] = new int[] {11, 22, 33};
threeDArray[2, 1] = new int[] {44, 55, 66};
threeDArray[2, 2] = new int[] {77, 88, 99};

2. 嵌套交错数组(Jagged Array of Jagged Arrays)

如果你以后可能需要灵活调整每行的小数组数量(比如某一行可能有4个小数组,另一行只有2个),那用**int[][][]**这种嵌套交错数组更合适,它的每个子数组长度可以独立设置。

实现代码

// 先创建外层数组(3行)
int[][][] jagged3D = new int[3][][];

// 给第一行初始化3个int数组
jagged3D[0] = new int[][]
{
    new int[] {1, 3, 5},
    new int[] {2, 4, 6},
    new int[] {7, 8, 9}
};

// 给第二行初始化3个int数组
jagged3D[1] = new int[][]
{
    new int[] {0, 2, 4},
    new int[] {1, 3, 5},
    new int[] {6, 7, 8}
};

// 给第三行初始化3个int数组
jagged3D[2] = new int[][]
{
    new int[] {11, 22, 33},
    new int[] {44, 55, 66},
    new int[] {77, 88, 99}
};

// 访问示例:取第三行第一个小数组的第三个元素
int value = jagged3D[2][0][2]; // 结果是33

两种方式的小区别

  • 三维矩形数组(int[,,]):结构固定,内存连续,访问速度快,完全匹配你的规整场景。
  • 嵌套交错数组(int[][][]):更灵活,每个子数组长度可以不一样,但内存是分散的,访问效率略低一点。

内容的提问来源于stack exchange,提问作者john

火山引擎 最新活动