【发布时间】:2009-12-21 12:40:48
【问题描述】:
我必须在 C# 的不安全代码中传递 ULONG_PTR。
我了解ULONG_PTR 的原因是允许 32 位和 64 位操作系统使用单一代码库。
这是 C# 的UIntPtr 的情况吗?将 .Net UIntPtr 作为 ULONG_PTR 参数传递时,我可以自信吗?
谢谢!
【问题讨论】:
我必须在 C# 的不安全代码中传递 ULONG_PTR。
我了解ULONG_PTR 的原因是允许 32 位和 64 位操作系统使用单一代码库。
这是 C# 的UIntPtr 的情况吗?将 .Net UIntPtr 作为 ULONG_PTR 参数传递时,我可以自信吗?
谢谢!
【问题讨论】:
来自MSDN:
IntPtr 类型符合 CLS, 而 UIntPtr 类型不是。仅有的 IntPtr 类型用于常见的 语言运行时。 UIntPtr 类型是 主要用于维护 与 IntPtr 的架构对称 输入
这两种类型都能够存储 32 位和 64 位指针。首选类型是IntPtr。
【讨论】:
根据 MSDN 对它的描述,我会说它应该是:
UIntPtr 类型被设计为一个整数,其大小是特定于平台的。也就是说,这种类型的实例在 32 位硬件和操作系统上预计为 32 位,在 64 位硬件和操作系统上预计为 64 位。
【讨论】: