有谁知道一种有效的方法来将 C# 中的 2d 数组(非锯齿状)展平为 1d 并再次返回。我知道在后端 C# 必须将其作为一维数组保存,如果可能的话,我只想获得后端一维数组的句柄。
我想这样做的原因是因为我希望能够在托管代码中将其作为 2d,有时我想将其作为 1d 传递给非托管 dll 导入代码(数字图像中的优化程序集)处理就是一个很好的例子)。
嗯,物体本身并不是一个byte[]
,即使它的数据本身位于一个连续的内存块中。不要忘记数组也知道它的等级和长度等。
但是,您可以使用Buffer.BlockCopy http://msdn.microsoft.com/en-us/library/system.buffer.blockcopy.aspx快速复制数组。例如:
byte[,] source = new byte[5,5];
byte[] dest = new byte[source.Length];
Buffer.BlockCopy(source, 0, dest, 0, source.Length);
请注意,最后一个参数是bytes,而不是数组元素的数量。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)