8

我不明白什么是 IntPtr,有人可以解释一下吗?谢谢

4

6 回答 6

9

它是一个与指针大小相同的整数。32 位图像中的 32 位宽,64 位图像中的 64 位宽。

于 2011-02-05T09:47:59.553 回答
8

它是void*.

您可以void*在托管代码中进行转换以供使用,而不必求助于托管层中的不安全代码,例如 C#。

于 2011-02-05T09:49:35.357 回答
2

它是一种特定于 .NET 平台的类型,用于表示指针或句柄。

IntPtr 类型被设计为一个整数,其大小是特定于平台的。也就是说,这种类型的实例在 32 位硬件和操作系统上预计为 32 位,在 64 位硬件和操作系统上预计为 64 位。

IntPtr 类型可以被支持指针的语言使用,并且作为在支持和不支持指针的语言之间引用数据的常用方法。

IntPtr 对象也可用于保存句柄。例如,在 System.IO.FileStream 类中广泛使用 IntPtr 的实例来保存文件句柄。

(来自MSDSN

于 2011-02-05T09:49:51.777 回答
1

这是关于 c 和 c++ 类型的 intptr_t 但原理是相同的。 什么是 uintptr_t 数据类型

于 2011-02-05T10:05:55.370 回答
0

http://msdn.microsoft.com/en-us/library/system.intptr(v=VS.100).aspx#Y69

于 2011-02-05T09:48:48.017 回答
0

一个指针大小的黑盒。有时您的语言不支持不安全的代码/指针,因此需要在 API 中使用 IntPtr。

我认为自 .net 2 以来它的使用已经减少,因为它的许多用例更适合安全处理。

于 2011-02-05T09:48:59.107 回答