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)将提示错误。为什么?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
一个是数组数组,一个是2d数组。前者可以锯齿状,后者是统一的。
也就是说,a 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];
在第二项上,因为它是统一的2d数组,所以不能将1d数组分配给行或列,因为必须同时对行和列进行索引,这会使您陷入单一double:
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 不是 2d数组,而是1d数组(数组),因此,由于要创建1d数组(数组),因此只能指定一个索引:
double[][] ServicePoint = new double[10][];
然后,当在阵列中创建的每个项目,每个这些也都是阵列,所以然后可以指定它们的尺寸(其可以是不同的,因此术语锯齿状排列):
ServicePoint[0] = new double[13]; ServicePoint[1] = new double[20];
问题来源于stack overflow