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)将提示错误。为什么?
发布于 2012-09-24 14:44:16
一个是数组,另一个是2d数组。前者可以是锯齿状的,后者是均匀的。
也就是说,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数组,所以不能将一维数组分配给行或列,因为必须同时索引行和列,这会使您降至单个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数组,而是一个一维数组(数组),因此由于要创建一个一维数组(数组),所以只指定一个索引:
double[][] ServicePoint = new double[10][];然后,当您在数组中创建每一项时,其中的每一项都是数组,因此您可以指定它们的维度(这可能是不同的,因此术语为锯齿数组):
ServicePoint[0] = new double[13];
ServicePoint[1] = new double[20];希望这能帮上忙!
发布于 2012-09-24 14:53:54
在第一个例子中,您试图创建一个所谓的锯齿数组。
double[][] ServicePoint = new double[10][9].如果像下面这样定义,上面的语句就会起作用。
double[][] ServicePoint = new double[10][]这意味着您正在创建一个大小为10的数组,该数组可以在it.In简单术语中存储10个大小不同的数组-- arrays.see数组,如下所示,它表示一个锯齿状数组。

http://msdn.microsoft.com/en-us/library/2s05feca(v=vs.80).aspx
第二个基本是二维数组,语法是正确的和可接受的。
double[,] ServicePoint = new double[10,9];//<-ok (2)要访问或修改二维数组,您必须传递两个维度,但在您的示例中,您只传递一个维度,这就是错误的原因。
正确的用法是
ServicePoint[0][2]引用第一行、第三列上的项。
你的二维数组的图片代表

发布于 2012-09-24 14:45:29
double[][]称为锯齿阵列,声明中未指定内部维度。与矩形阵列不同,每个内部数组都可以是任意长度。每个内部数组都隐式初始化为null,而不是空数组。每个内部数组必须手动创建:引用C# 4.0概括地说是最终引用
for (int i = 0; i < matrix.Length; i++)
{
matrix[i] = new int [3]; // Create inner array
for (int j = 0; j < matrix[i].Length; j++)
matrix[i][j] = i * 3 + j;
}double[,]称为rectangular arrays,它使用逗号来分隔每个维度。下面的代码声明了一个矩形的3×3二维数组,将其初始化为从0到8的数字:
int [,] matrix = new int [3, 3];
for (int i = 0; i < matrix.GetLength(0); i++)
for (int j = 0; j < matrix.GetLength(1); j++)
matrix [i, j] = i * 3 + j;https://stackoverflow.com/questions/12567329
复制相似问题