我使用了
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
解决这个问题的方法是使用可空的 int
。
现在,要解决您的问题:
将您的方法签名更改为 public void verifymarks(double[,] marks)
,并在方法中将使用 marks[x][y]
的任何内容更改为 marks[x,y]
。
double[][]
被称为 Jagged array。它是一个数组的数组(就像您可以创建一个列表的列表一样)。使用此结构,您可以为每个子数组指定不同的大小。
例如:
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" } };
jaggedarray
和multidimarray
包含相同的数据类型,它应该可以工作。 - Cédric Bignonjaggedarray[j]
没有被初始化。你需要为每个j
执行jaggedarray[j] = new double[2]
,然后才能访问它的元素。 - Cédric Bignon以下是来自LINQPad的Dump()
函数的可视化结果。
第一张图展示了double[,]
,它创建了一个矩阵。第二张图展示了double[][]
,它只是一个数组的数组。