我用了
double [,] marks=new double[26,5]
int[] function = object.verify(marks)
public void verifymarks(double[][] marks)
我得到的错误是无法从 double[ , ] 转换为 double[][] 我试图在互联网上搜索但找不到任何解决方案。我刚开始使用c#。请帮忙。提前谢谢
我用了
double [,] marks=new double[26,5]
int[] function = object.verify(marks)
public void verifymarks(double[][] marks)
我得到的错误是无法从 double[ , ] 转换为 double[][] 我试图在互联网上搜索但找不到任何解决方案。我刚开始使用c#。请帮忙。提前谢谢
double[][]
是锯齿状的。它实际上是一个数组数组。
double[,]
是多维的。它得到特殊的编译器处理。
它们有不同的内存布局。double[][]
是一个数组,它保存对其他数组的引用,而double[,]
单维布局以便于使用。
另一个区别是它们可以保存哪些数据。锯齿状数组可以是这样的:
1231243245345345345345
23423423423423
2342342343r234234234234234234
23423
虽然多维数组必须是一个完美的表,但如下所示:
34534534534534
34534534534533
34534534534534
34534534534545
解决它的一种方法是使用 nullable int
s。
现在,要解决您的问题:
将您的方法签名更改为public void verifymarks(double[,] marks)
,并在方法中将使用的任何内容更改marks[x][y]
为marks[x,y]
.
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" } };
这是来自 LINQPadDump()
函数的视觉效果。
第一个是double[,]
,它创建一个矩阵。第二个是double[][]
,它只是一个数组数组。