2009-12-21 143 views
6

我不得不在C#中以不安全的代碼傳遞ULONG_PTRC#ULONG_PTR相當於

據我所知,ULONG_PTR的原因是爲了允許32位和64位操作系統的單一代碼庫。

這是C#的UIntPtr的情況嗎?將.Net UIntPtr作爲ULONG_PTR參數傳遞時,我可以有信心嗎?

謝謝!

回答

6

MSDN

的IntPtr的類型是符合CLS, 而UIntPtr類型不是。只有 IntPtr類型用於公共 語言運行時。所述UIntPtr類型是提供主要是爲了保持 建築對稱性與IntPtr的 類型

這兩種類型的能夠存儲32位和64位指針的 。首選的類型是IntPtr

2

基於它的MSDN描述我會說,這應該是:

的UIntPtr類型的設計是一個整數,其大小是特定於平臺。也就是說,這種類型的實例預期在32位硬件和操作系統上爲32位,在64位硬件和操作系統上爲64位。