C#-float[]声明

C#-float[]声明,c#,multidimensional-array,C#,Multidimensional Array,我试图声明这种类型的变量: float[][] 不适合我的东西(不会编译)- 当试图像这样声明数组时- int a = 3; int b = 2; float[][] inputs = new float[][] { new float[a], new float[b] }; 我得到了一个具有两个浮点数组的多维数组,而不是一个具有3个数组且每个数组大小为2的数组。嗯,有两种不同的类型: 阵列的阵列(锯齿阵列): 二维阵列: float[,] sample2 = new flo

我试图声明这种类型的变量:

float[][]
不适合我的东西(不会编译)-

当试图像这样声明数组时-

int a = 3;
int b = 2;
float[][] inputs = new float[][]
{
   new float[a],
   new float[b]
};
我得到了一个具有两个浮点数组的多维数组,而不是一个具有3个数组且每个数组大小为2的数组。

嗯,有两种不同的类型:

  • 阵列的阵列(锯齿阵列):

  • 二维阵列:

    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缩短声明:

或者在2d阵列的情况下

  // 2d array 10x5
  float[,] inputs = new float[10,5];

我们不能用不起作用的东西做任何事情?这在很多C#初学者中都有解释。例如:与此相关的是,您的(修改后的)初始化代码是否比使用循环更有效?例如,(var idx=0;idx?@J.H.Bonarius:如果允许构建数组,那么您可以提出一个循环解决方案(正如您所做的),但是,当需要声明时,例如
私有浮点[][]输入=?
您不能使用循环。您能详细说明一下“构建数组”吗?我不知道这个概念。。。我在代码中经常使用循环,作为一个高性能的数学应用程序,我想优化它。编辑:也许我应该在[cr]@:J.H.Bonarius中问一个问题你不能通过循环来声明数组(比如,类中的
字段
):
私有浮点[][]输入=/*此处没有循环*/
。但是,如果允许将字段声明为
float[]inputs=newfloat[10][]并且仅在此之后(在构造函数中)才能构建数组:
publicmyclass(){/*您可以在方法/constructor*/}
循环中使用循环是一个很好的解决方案。
  // 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],
  };
  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 array 10x5
  float[,] inputs = new float[10,5];