<分区>
double[][] ServicePoint = new double[10][9]; // <-- gives an error (1)
double[,] ServicePoint = new double[10,9]; // <-- ok (2)
它们有什么区别? (1) 产生错误,原因是什么?
和
double d = new double[9]
ServicePoint[0] = d;
使用(2) 会提示错误。为什么?
<分区>
double[][] ServicePoint = new double[10][9]; // <-- gives an error (1)
double[,] ServicePoint = new double[10,9]; // <-- ok (2)
它们有什么区别? (1) 产生错误,原因是什么?
和
double d = new double[9]
ServicePoint[0] = d;
使用(2) 会提示错误。为什么?
最佳答案
一个是数组的数组,一个是二维数组。前者可以是锯齿状的,后者是均匀的。
也就是说,double[][]
可以有效地是:
double[][] x = new double[5][];
x[0] = new double[10];
x[1] = new double[5];
x[2] = new double[3];
x[3] = new double[100];
x[4] = new double[1];
因为数组中的每一项都是对double
数组的引用。使用锯齿状数组,您可以在第二个示例中对数组进行赋值:
x[0] = new double[13];
在第二项上,因为它是一个统一的二维数组,你不能将一个一维数组分配给行或列,因为你必须同时索引行和列,这让你只能使用一个 双
:
double[,] ServicePoint = new double[10,9];
ServicePoint[0]... // <-- meaningless, a 2d array can't use just one index.
更新:
根据您的问题澄清一下,您的 #1 出现语法错误的原因是因为您有这个:
double[][] ServicePoint = new double[10][9];
并且在构建的时候不能指定第二个索引。关键是 ServicePoint 不是二维数组,而是一维数组(数组),因此由于您正在创建一维数组(数组),因此您只指定一个索引:
double[][] ServicePoint = new double[10][];
然后,当您在数组中创建每个项目时,每个项目也是数组,因此然后您可以指定它们的维度(可以不同,因此术语锯齿状 数组):
ServicePoint[0] = new double[13];
ServicePoint[1] = new double[20];
希望对您有所帮助!
关于c# - 多维数组 [][] 与 [,],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12567329/