C# 如何创建包含6组、每组4个不同形状子数组的四层锯齿数组
问题根源
原代码的核心问题是遍历组内4个二维数组时,统一硬编码了相同的行、列尺寸,没有按照每组要求的不同形状分别初始化数组,最终导致同一组内4个二维数组结构完全一致,不符合预期的嵌套结构。
调整方案
- 提前定义每组内4个二维数组对应的固定形状(完全匹配给出的示例结构)
- 初始化每个二维数组时,按形状映射表取对应行数、列数,替代原代码里统一固定的7行6列配置
- 保持外层6个元素的总规模不变,每个外层元素下挂载4个不同形状的二维数组
调整后可直接运行的代码
int populationSize = 6; double[][][][] population = new double[populationSize][][][]; int fillValue = 3; // 提前定义组内4个二维数组的固定形状:(行数, 列数) // 完全匹配示例给出的数组尺寸要求 (int Rows, int Cols)[] innerArrayShapes = new (int, int)[] { (7, 6), // 第1个二维数组:7行6列 (5, 3), // 第2个二维数组:5行3列 (5, 1), // 第3个二维数组:5行1列 (1, 5) // 第4个二维数组:1行5列 }; for (int i = 0; i < populationSize; i++) { // 每个外层元素包含4个二维数组 population[i] = new double[4][][]; for (int j = 0; j < 4; j++) { // 按当前j位置取对应的二维数组尺寸 var (rows, cols) = innerArrayShapes[j]; population[i][j] = new double[rows][]; for (int k = 0; k < rows; k++) { population[i][j][k] = new double[cols]; for (int m = 0; m < cols; m++) { population[i][j][k][m] = fillValue; } } } }
结构校验说明
初始化完成后的结构完全匹配预期要求:
- 最外层数组长度为6,对应
populationSize的配置 - 每个外层元素下是长度为4的数组,对应每组的4个二维数组
- 每组内的4个二维数组形状分别为7×6、5×3、5×1、1×5,和示例给出的结构完全一致,无尺寸重复
内容的提问来源于stack exchange,提问作者Paul Phoenix
相关产品推荐
相关产品推荐

