Могу ли я преобразовать значение IntPtr в другое IntPtr без небезопасного в C #? - PullRequest
0 голосов
/ 07 марта 2019

Предположим, у меня есть IntPtr, который был пустым **, полученным из нативного кода.Когда я собирался отнести его к пустому * эквивалентному IntPtr, я использовал такой код:

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

Для этого мне нужно включить код unsafe.Мне интересно, есть ли другой способ конвертировать указатели такого типа без небезопасных?


Обновление:

Извините за мой вопрос недействителен.Использование (IntPtr)outerPtr.ToPointer() не имеет смысла.

1 Ответ

0 голосов
/ 07 марта 2019

(IntPtr)outerPtr.ToPointer() на самом деле не делает ничего полезного, результат по-прежнему содержит тот же адрес.

Если вы хотите получить эквивалент разыменования void** до void*, вы можете использовать Marshal.ReadIntPtr(IntPtr address).

...