小编Pet*_*sky的帖子

将指针数组转换为IntPtr数组

我陷入了一项看似微不足道的任务,需要你的帮助.

我需要编写一个带有以下签名的方法:

System.Array ToIntPtrArray(System.Array a)
Run Code Online (Sandbox Code Playgroud)

其中一个实际的参数可以是任意的阵列指针类型(例如int*[],long**[],void*[,]),并用类型的元素返回相同形状的阵列System.IntPtr具有相同的数值作为输入数组的元素.问题是如果我事先不知道它们的类型,我不明白如何提取指针的数值.


例如,如果我事先知道我的参数总是类型void*[],我可以编写如下方法:

unsafe IntPtr[] ToIntPtrArray(void*[] a)
{
    var result = new IntPtr[a.Length];
    for (int i = 0; i < a.Length; i++)
        result[i] = (IntPtr) a[i];

    return result;
}
Run Code Online (Sandbox Code Playgroud)

但问题是它可能不是void*[],但是void**[]或其他任何东西,该方法应该能够处理所有情况.

.net c# arrays pointers intptr

10
推荐指数
1
解决办法
2044
查看次数

标签 统计

.net ×1

arrays ×1

c# ×1

intptr ×1

pointers ×1