我不明白什么是 IntPtr,有人可以解释一下吗?谢谢
问问题
16768 次
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
于 2011-02-05T09:48:48.017 回答
0
一个指针大小的黑盒。有时您的语言不支持不安全的代码/指针,因此需要在 API 中使用 IntPtr。
我认为自 .net 2 以来它的使用已经减少,因为它的许多用例更适合安全处理。
于 2011-02-05T09:48:59.107 回答