c# - 无法从 double[][] 转换为 double[*,*]

标签 c# arrays

我有一个代码看起来(或多或少):

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/

相关文章:

c# - 如何将这两种相似的方法重构为一个?

c# - Unity C# 将float转换为字节数组并用node js读取

javascript - JS 通过对象创建数组的缩写

javascript - 访问存储在 Javascript 数组中的对象

javascript - 在将数组推送到数组并像对象一样分配键值对之后,数组的长度是多少

c# - 存储过程错误 "argument 1 for routine ... is not a variable or NEW pseudo-variable in BEFORE trigger"

c# - SQL Server 2008 R2 的可重试 SQLBulkCopy

c# - 统一 : Live Video Streaming

c - 传递给结构地址后获取数组内容

ios - 将多个数组相加形成一个最终数组。调试 swift xcode