我可以在 C# 中将 IntPtr 的值转换为另一个没有不安全的 IntPtr 吗?

Can I convert a value of IntPtr to another IntPtr without unsafe in C#?

假设我有一个 IntPtr,它是从本机代码获取的 void**。当我打算将它推崇为 void* 等价 IntPtr 时,我使用了这样的代码:

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

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


更新:

抱歉,我的问题无效。 (IntPtr)outerPtr.ToPointer()的用法没有意义。

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

如果您想要将 void** 取消引用到 void* 的等价物,您可以使用 Marshal.ReadIntPtr(IntPtr address).