C#使用多个一维数组初始化多维数组

Dan*_*ins 4 c# arrays multidimensional-array

我正在尝试使用两个现有的1D数组初始化一个二维数组。显然,如果我们知道这些数组的值,就可以像这样初始化它:

float[,] my2DArray = new float{{1,2}, {3,4}};
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试使用如下变量初始化数组:

float[] a = {1,2};
float[] b = {3,4};
float[,] my2DArray = new float{a,b};
Run Code Online (Sandbox Code Playgroud)

然后我得到一个错误“期望嵌套数组初始化程序”。 我猜想这可能与编译器不知道数组的尺寸有关,因为它直到运行时才分配。

那么,有什么办法可以解决这种数组分配问题吗?我的目标是.NET 4.0。

Ree*_*sey 5

您需要自己初始化数组。与使用循环相比,与循环相比,您可以提高性能并缩短代码Buffer.BlockCopy,但不能直接进行内联初始化:

float[] a = {1,2};
float[] b = {3,4};
float[,] my2DArray = new float[a.Length, 2];

int len = a.Length * sizeof(float);
Buffer.BlockCopy(a, 0, my2DArray, 0, len);
Buffer.BlockCopy(b, 0, my2DArray, len, len);
Run Code Online (Sandbox Code Playgroud)

请注意,您必须确保源数组具有相同的长度才能起作用。