无法从双[] []转换为加倍[*,*]
我有一个看起来像(或多或少)代码:无法从双[] []转换为加倍[*,*]
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来说,它只是一个双精度*,你使用myArray[x+y*width]
来访问一个元素。
很简单,[,]
数组(二维数组)和[][]
数组(锯齿阵列)是不一样的。
A [,]
数组可以在视觉上用矩形表示(因此它也被称为矩形数组),而[][]
数组是包含其他1D数组的一维数组。
将一个施放到另一个没有多大意义。
一个叫做multidimensional array(double[*,*]
),另一个叫做jagged array(double[][]
)。
这是一个很好的讨论他们之间的差异。
What is differences between Multidimensional array and Array of Arrays in C#?
不错的职位确实... – 2011-02-10 10:24:36
你应该定义你的双阵列像这样:
double[,] WageLossPerVacationDay = new double[3, 5];
那么它应该工作!
hth
Thanx。这不是我的观点,因为代码只是一个例子,我不得不实际使用一组数组 – 2011-02-10 10:21:36
CodeInChaos中风再次;-)总是精确和相关的记忆问题。 Thanx – 2011-02-10 10:19:33