首页 > 解决方案 > 在 C# 中将列表转换为 3D 数组

问题描述

有谁知道如何将列表转换为 3D 数组?我的输入列表实际上将始终是 3D 数组的“扁平化”版本,因此我将始终知道数组的尺寸。任何线索都会很棒

        T[,] output = new T[height, width];
        for (int i = 0; i < height; i++)
        {
            for (int j = 0; j < width; j++)
            {
                output[i, j] = input[i * width + j];
            }
        }

这是将列表/数组转换为 2D 数组,但我似乎并没有将头转换为 3D 数组

标签: c#listmultidimensional-array

解决方案


您将需要知道三个 3D 数组的每个维度。假设它们是d1d2d3,那么您可以使用此代码来获取所需的数组,假设是一个int数组:

int i, j, k, p;
int[,,] Arr = new int[d1, d2, d3];
p = 0;
for (i = 0; i < d1; i++)
    for (j = 0; j < d2; j++)
        for (k = 0; k < d3; k++)
            a[i, j, k] = lst[p++];

如果您想要一个与您的示例类似的解决方案,您可以试试这个:

int i, j, k;
int[,,] Arr = new int[d1, d2, d3];
for (i = 0; i < d1; i++)
    for (j = 0; j < d2; j++)
        for (k = 0; k < d3; k++)
            a[i, j, k] = lst[i * d2 * d3 + j * d3 + k];

推荐阅读