多维数组[]VS[,]

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)将提示一个错误。为什么?


慕仙森
浏览 461回答 3
3回答

慕桂英4014372

一个是数组,另一个是2d数组。前者可以锯齿状,后者是均匀的。就是,double[][]可以有效地:double[][]&nbsp;x&nbsp;=&nbsp;new&nbsp;double[5][];x[0]&nbsp;=&nbsp;new&nbsp;double[10];x[1]&nbsp;=&nbsp;new&nbsp;double[5];x[2]&nbsp;=&nbsp;new&nbsp;double[3];x[3]&nbsp;=&nbsp;new&nbsp;double[100];x[4]&nbsp;=&nbsp;new&nbsp;double[1];因为数组中的每个条目都是对double..使用锯齿数组,您可以在第二个示例中对数组执行所需的赋值:x[0]&nbsp;=&nbsp;new&nbsp;double[13];在第二项中,因为它是统一的2d数组,所以不能将一维数组分配给行或列,因为必须同时索引行和列,这会使您降低到单个double:double[,]&nbsp;ServicePoint&nbsp;=&nbsp;new&nbsp;double[10,9];ServicePoint[0]...&nbsp;//&nbsp;<--&nbsp;meaningless,&nbsp;a&nbsp;2d&nbsp;array&nbsp;can't&nbsp;use&nbsp;just&nbsp;one&nbsp;index.更新:为了根据您的问题澄清,您的#1语法错误的原因是:double[][]&nbsp;ServicePoint&nbsp;=&nbsp;new&nbsp;double[10][9];并且不能在施工时指定第二个索引。关键是ServicePoint是不一个2d数组,但是一个一维数组(数组),因此由于您正在创建一个一维数组(数组),所以您只指定了一个索引:double[][]&nbsp;ServicePoint&nbsp;=&nbsp;new&nbsp;double[10][];然后,当您在数组中创建每一项时,其中的每一项都是数组,因此然后您可以指定它们的维度(可以是不同的,因此术语)。锯齿状数组):ServicePoint[0]&nbsp;=&nbsp;new&nbsp;double[13];ServicePoint[1]&nbsp;=&nbsp;new&nbsp;double[20];希望能帮上忙!

慕标琳琳

double[][]被称为锯齿阵列,声明中没有指定内部维度。不像矩形阵列,每个内部数组都可以是任意长度。每个内部数组都隐式初始化为NULL,而不是空数组。必须手动创建每个内部数组:参考[C#4.0]for&nbsp;(int&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;<&nbsp;matrix.Length;&nbsp;i++){ &nbsp;&nbsp;&nbsp;&nbsp;matrix[i]&nbsp;=&nbsp;new&nbsp;int&nbsp;[3];&nbsp;//&nbsp;Create&nbsp;inner&nbsp;array &nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(int&nbsp;j&nbsp;=&nbsp;0;&nbsp;j&nbsp;<&nbsp;matrix[i].Length;&nbsp;j++) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;matrix[i][j]&nbsp;=&nbsp;i&nbsp;*&nbsp;3&nbsp;+&nbsp;j;}double[,]被称为rectangular arrays,使用逗号来分隔每个维度。下面的代码声明了一个矩形的3×3二维数组,并将其初始化为从0到8的数字:int&nbsp;[,]&nbsp;matrix&nbsp;=&nbsp;new&nbsp;int&nbsp;[3,&nbsp;3];for&nbsp;(int&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;<&nbsp;matrix.GetLength(0);&nbsp;i++) &nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(int&nbsp;j&nbsp;=&nbsp;0;&nbsp;j&nbsp;<&nbsp;matrix.GetLength(1);&nbsp;j++) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;matrix&nbsp;[i,&nbsp;j]&nbsp;=&nbsp;i&nbsp;*&nbsp;3&nbsp;+&nbsp;j;
打开App,查看更多内容
随时随地看视频慕课网APP