c#中double 与double 之间的差异

我用了

double [,] marks=new double[26,5] int[] function = object.verify(marks) public void verifymarks(double[][] marks) 

我得到的错误是无法从双[ ]转换为双[] []我试图在互联网上搜索但无法找到任何解决方案。 我刚刚开始使用c#。 请帮忙。 THankx提前

double[][]是锯齿状的。 它实际上是一个数组数组。

double[,]是多维的。 它得到特殊的编译器处理。

它们具有不同的内存布局。 double[][]是一个数组,它保存对其他数组的引用,而double[,]是单维排列的,以便于使用。

另一个区别是他们可以容纳的数据。 锯齿状数组可以是这样的:

 1231243245345345345345 23423423423423 2342342343r234234234234234234 23423 

虽然多维数组必须是一个完美的表,如下所示:

 34534534534534 34534534534533 34534534534534 34534534534545 

解决它的方法是使用nullable int

现在,解决您的问题:

将方法签名更改为public void verifymarks(double[,] marks)并在方法中将使用marks[x][y]任何内容更改为marks[x,y]

double[][]被称为Jagged数组 。 它是一个数组数组(与创建列表列表的方式相同)。 使用此结构,您可以为每个子数组指定不同的大小。

举个例子:

 double[][] jaggedArray = new double[2][]; jaggedArray[0] = new double[5]; jaggedArray[1] = new double[151]; 

另一个写double[,]是2D数组(一般是多维数组 )。 你可以把它看成一张桌子。

多维数组的一个非常方便的function是初始化:

 string[,] test = new string[3, 2] { { "one", "two" }, { "three", "four" }, { "five", "six" } }; 

这是来自LINQPad的Dump()函数的视觉效果。

在此处输入图像描述

第一个是double[,] ,它创建一个矩阵。 第二个是double[][] ,它只是一个数组数组。