我的 .NET 应用程序中有大量数字的 3D 数组。我需要将它们转换为一维数组以将其传递给 COM 库。有没有一种方法可以在不复制所有数据的情况下转换数组?
我可以像这样进行转换,但是我使用了两倍的内存,这在我的应用程序中是一个问题:
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;
最佳答案
我不相信 C# 将数据存储在内存中的方式会使它像 C 中的简单转换一样可行。为什么不使用 1d 数组开始,也许为该类型创建一个类,这样您就可以在程序中访问它,就好像它是 3d 数组一样?
关于c# - 是否可以在不制作副本的情况下将 C# double[,,] 数组转换为 double[],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/96054/