我不明白什么是IntPtr,有人可以解释一下吗? 感谢
答案 0 :(得分:9)
这是一个与指针大小相同的整数。 32位图像中的32位宽,64位图像中的64位宽。
答案 1 :(得分:8)
它是void*
的管理对应方。
您可以在void*
之间进行强制转换,以便在托管代码中使用,而无需在托管图层中使用不安全的代码,例如C#。
答案 2 :(得分:2)
它是一种特定于.NET平台的类型,用于表示指针或句柄。
IntPtr类型设计为整数,其大小是特定于平台的。也就是说,这种类型的实例预计在32位硬件和操作系统上为32位,在64位硬件和操作系统上为64位。
IntPtr类型可以由支持指针的语言使用,也可以作为在支持指针和不支持指针的语言之间引用数据的常用方法。
IntPtr对象也可用于保存句柄。例如,IntPtr的实例在System.IO.FileStream类中广泛用于保存文件句柄。
(来自MSDSN)
答案 3 :(得分:1)
这是关于c和c ++类型的intptr_t,但原理是一样的。 What is uintptr_t data type
答案 4 :(得分:0)
答案 5 :(得分:0)
指针大小的黑盒子。有时您的语言不支持不安全的代码/指针,因此需要在API中使用IntPtr。
我认为自从.net 2以来它的使用已经减少了,因为它的许多用例更适合安全处理。