首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >可以将C#double [,,]数组转换为double []而无需复制?

可以将C#double [,,]数组转换为double []而无需复制?
EN

Stack Overflow用户
提问于 2018-08-08 00:08:25
回答 2查看 0关注 0票数 0

我的.NET应用程序中有大量的3D数组。我需要将它们转换为1D数组以将其传递给COM库。有没有办法转换数组而不复制所有数据?

我可以像这样进行转换,但后来我使用了两倍的内存量,这是我的应用程序中的一个问题:

代码语言:javascript
复制
  double[] result = new double[input.GetLength(0) * input.GetLength(1) * input.GetLength(2)];
  for (i = 0; i < input.GetLength(0); i++) 
    for (j = 0; j < input.GetLength(1); j++) 
      for (k = 0; k < input.GetLength(2); k++) 
        result[i * input.GetLength(1) * input.GetLength(2) + j * input.GetLength(2) + k)] = input[i,j,l];
  return result;
EN

回答 2

Stack Overflow用户

发布于 2018-08-08 08:27:45

我不相信C#将数据存储在内存中的方式可以像C中的简单转换一样使其可行。为什么不使用1d数组开始,也许为类型创建一个类,这样你就可以在程序中访问它,好像它是一个3d数组?

票数 0
EN

Stack Overflow用户

发布于 2018-08-08 10:00:33

在不知道COM库的详细信息的情况下,我会考虑在.Net中创建一个Facade类,并在必要时将其公开给COM。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100000525

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档