我正在尝试声明这种变量:
float[][]
对我不起作用的事情(不会编译) -
float[][] inputs = new float[10][5];
float[][] inputs = new float[10,5];
当试图像这样声明数组时 -
int a = 3;
int b = 2;
float[][] inputs = new float[][]
{
new float[a],
new float[b]
};
我得到一个带有两个浮点数组的多维数组,而不是一个有3个数组且每个数组大小为2的数组。
答案 0 :(得分:3)
嗯,有两个不同的类型:
数组数组(锯齿状数组):
float[][] sample = new float[][] {
new float[] {1, 2, 3},
new float[] {4, 5}, // notice that lines are not necessary of the same length
};
2d数组:
float[,] sample2 = new float[,] {
{1, 2, 3},
{4, 5, 6},
};
修改:修改了您的代码:
// jagged array (10 arrays each of which has 5 items)
float[][] inputs = new float[10][] {
new float[5],
new float[5],
new float[5],
new float[5],
new float[5],
new float[5],
new float[5],
new float[5],
new float[5],
new float[5],
};
您可以在 Linq 的帮助下缩短声明:
float[][] inputs = Enumerable
.Range(0, 10) // 10 items
.Select(i => new float[5]) // each of which is 5 items array of float
.ToArray(); // materialized as array
或者在2d数组的情况下
// 2d array 10x5
float[,] inputs = new float[10,5];