如何将单维数组转换为多维数组?(C#)

Jad*_*ias 4 .net c# arrays multidimensional-array

我必须使用一个接受double [,]的方法,但我只有一个double [].我怎么转换它?

目前解决方案:

var array = new double[1, x.Length];
foreach (var i in Enumerable.Range(0, x.Length))
{
    array[0, i] = x;
}
Run Code Online (Sandbox Code Playgroud)

Meh*_*ari 8

没有直接的方法.你应该把东西复制成一个double[,].假设您想要它在一行中:

double[,] arr = new double[1, original.Length];
for (int i = 0; i < original.Length; ++i) 
    arr[0, i] = original[i];
Run Code Online (Sandbox Code Playgroud)


Sha*_*rly 6

如果您知道2D数组的宽度,则可以使用以下内容将值作为一行接一行地放入.

    private T[,] toRectangular<T>(T[] flatArray, int width)
    {
        int height = (int)Math.Ceiling(flatArray.Length / (double)width);
        T[,] result = new T[height, width];
        int rowIndex, colIndex;

        for (int index = 0; index < flatArray.Length; index++)
        {
            rowIndex = index / width;
            colIndex = index % width;
            result[rowIndex, colIndex] = flatArray[index];
        }
        return result;
    }
Run Code Online (Sandbox Code Playgroud)