C# - float [] []声明

时间:2017-03-01 09:12:37

标签: c# multidimensional-array

我正在尝试声明这种变量:

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的数组。

1 个答案:

答案 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];