这个问题在这里已经有答案了:
C#中的多维数组和数组数组之间有什么区别?
(12个答案)
(12个答案)
8年前关闭的
double[]ServicePoint=new double[10][9];//<;——给出一个错误(1)
双精度[,]服务点=新双精度[10,9];//<;——好的(2)
他们有什么不同(1)产生错误,原因是什么
及
双d=新双d[9]
服务点[0]=d;
使用(2)将提示错误。为什么?
一个是数组数组,另一个是二维数组。前者可以是锯齿状的,后者是均匀的
也就是说,double[][]可以有效地:
double[]x=新的双精度[5][];
x[0]=新的双精度[10];
x[1]=新的双精度[5];
x[2]=新的双精度[3];
x[3]=新的双精度[100];
x[4]=新的双精度[1];
因为数组中的每个条目都是对double数组的引用。对于锯齿阵列,您可以按照第二个示例中的要求对阵列进行赋值:
x[0]=新的双精度[13];
在第二项中,因为它是一个统一的二维数组,所以不能将1d数组指定给行或列,因为必须同时对行和列进行索引,这将使您简化为单双:
double[,]ServicePoint=新的double[10,9];
服务点[0]…//<;——毫无意义,2d数组不能只使用一个索引。
更新:
根据您的问题,您的#1出现语法错误的原因是:
double[]ServicePoint=new double[10][9];
并且在构建时不能指定第二个索引。关键是ServicePoint不是一个2d数组,而是一个1d数组(数组),因此,由于您要创建一个1d数组(数组),因此您只需指定一个索引:
double[]ServicePoint=new double[10][];
然后,当您在数组中创建每个项目时,每个项目都是数组,因此然后您可以指定它们的维度(可以不同,因此术语锯齿状数组):
服务点[0]=新的双精度[13];
ServicePoint[1]=新的双精度[20];
希望有帮助