我有一个代码看起来(或多或少):
public void INeedHolidaysNow(double[,]){
//... Code to take a break from coding and fly to Hawaii
}
double[][] WageLossPerVacationDay = new double[10][5];
INeedHolidays(WageLossPerVacationDay); // >>throws the Exception in the Title
我在 this post 上找到了解决方案这包括循环而不是尝试野蛮的转换
所以我的问题是:为什么?内存分配的幕后发生了什么,阻止了看起来 - 至少乍一看,是可行的类型转换?我的意思是在结构上,两种表达方式似乎完全相同。我在这里缺少什么?
编辑: 我必须使用外部库提供的“double[ ][ ]”。
最佳答案
一个是锯齿状的数组,另一个是一大块。
double[][]
是一个包含 double 组的数组。它的形状不一定是矩形的。在 c 术语中,它类似于 double**
double[,]
只是一大块内存,而且总是矩形的。在 c 术语中,它只是一个 double*,您可以在其中使用 myArray[x+y*width]
访问元素。
关于c# - 无法从 double[][] 转换为 double[*,*],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4955596/