是否可以在C#中将IntPtr的值转换为另一个IntPtr而又不安全?

时间:2019-03-07 08:37:39

标签: c# pointers unsafe

假设我有一个IntPtr,它是从本机代码获取的**。当我打算将其引用为void *等效IntPtr时,我使用了以下代码:

unsafe
{
    var innerPtr = (IntPtr)outerPtr.ToPointer();
}

为此,我需要启用unsafe代码。我想知道是否还有另一种方法来转换这种 不安全的指针?


更新:

抱歉,我的问题无效。 (IntPtr)outerPtr.ToPointer()的使用毫无意义。

1 个答案:

答案 0 :(得分:0)

(IntPtr)outerPtr.ToPointer()实际上并没有做任何有用的事情,结果仍然包含相同的地址。

如果您想要将void**引为void*的等效项,则可以使用Marshal.ReadIntPtr(IntPtr address)