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