7

我用了

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

public void verifymarks(double[][] marks)

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

4

3 回答 3

12

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

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

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

另一个区别是它们可以保存哪些数据。锯齿状数组可以是这样的:

1231243245345345345345
23423423423423
2342342343r234234234234234234
23423

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

34534534534534
34534534534533
34534534534534
34534534534545

解决它的一种方法是使用 nullable ints。

现在,要解决您的问题:

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

于 2013-07-22T19:14:23.040 回答
4

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

举个例子:

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

另一种写法double[,]是二维数组(通常是多维数组)。你可以把它看成一张桌子。

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

string[,] test = new string[3, 2] { { "one", "two" }, 
                                    { "three", "four" },
                                    { "five", "six" } };
于 2013-07-22T19:14:34.627 回答
2

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

在此处输入图像描述

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

于 2013-07-22T19:19:58.943 回答