在C#中向多维数组添加一个维度

8
我有一个多维数组。
byte[,] matrix;

我想要将内容复制到一个三维数组中。
byte[,,] 3dplan; 

用这种方式
3dplan[,,0]=matrix

在C#中,完成这个任务的最快方法是什么?


2
在Fortran中这很容易,但是基于C的语言还没有赶上数组操作符和切片索引的简单性。你总是不得不手动计算每个组件。哦,我多么渴望一个具有智能感知的数组感知.NET语言。 - John Alexiou
2个回答

6
你需要在嵌套循环中手动复制元素,没有更快的方法。
如果你切换到一个交错数组(byte[,][]byte[][][]),你可以将较小的数组整体插入到较大的数组槽中(尽管它们都将引用同一数组实例并会捕捉到变化)。

0

你可以使用Buffer.BlockCopy将2D数组复制到3D数组中:

var _3dplan = new int[2, 2, 2];
var _2dplan = new int[2, 2] { { 1, 1 }, { 1, 1 } };
var index = 0;
var size = _2dplan.Length * sizeof(int);
Buffer.BlockCopy(_2dplan, 0, _3dplan, index * size, size);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接