编组二维数组

时间:2014-02-06 14:45:23

标签: c# c++ .net marshalling

我想编组二维数组

int [10][20] //const dimensions size

从C ++ dll到C#代码。是否有自动封送器?找不到这么容易的任务的好方法。

    public int[,] _operators;

提供未定义的值。 是的,我可以将它设为一维仅用于编组,然后再用C#中的2个dimsions读取它,但是有自动简单方法吗?

=================

我认为最好的方法是使用这样的指针:

            const int 1dSize = 10;
            const int 2dSize = 10;
            var ret = new int[1dSize, 2dSize];

        unsafe
        {
            int* ptrOnArray = NativeLibPrototypes.Get2DArrayPtr();
            for (int i1 = 0; i1 < 1dSize; i1++)
            {
                for (int i2 = 0; i2 < 2dSize; i2++)
                {
                    ret[i1, i2] = *ptrOnArray;
                    ptrOnArray++;
                }
            }
         }

1 个答案:

答案 0 :(得分:1)

[MarshalAs(UnmanagedType.ByValArray, SizeConst = 200)]
int[] _operators;

大小应该是数组中元素的数量。

选中此Default Marshaling for Arrays