多维数组[]vs[,][重复]

这个问题在这里已经有答案了
C#中的多维数组和数组数组之间有什么区别?

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

希望有帮助

发表评论