什么是手柄? IntPtr的

时间:2011-04-14 18:01:13

标签: c# .net handle intptr

我一直在阅读IntPtr,并已阅读它用于表示句柄。这究竟是什么意思?我确信这是一个简单的解释,但是灯泡现在还没有开启......

2 个答案:

答案 0 :(得分:6)

A"手柄"是一个"不透明指针"。它是一个值(通常只是一个数组,它是一个数组的索引),操作系统给应用程序表示一个内部对象,而不是给它一个指向实际对象的指针。这是出于安全和抽象的原因 - 它强制应用程序仅通过提供的API来使用句柄。

答案 1 :(得分:6)

这通常是指操作系统Handle,并在内部使用。例如,Windows窗体使用IntPtr来引用Control的本机窗口句柄(HWND)。

Windows API中的句柄用于许多事情 - 大多数与操作系统相关的资源(文件,套接字,窗口等)都通过句柄公开,这实际上是一个指针。在托管代码中,它存储在IntPtr

话虽如此,IntPtr也经常用于在互操作场景中存储指针,因为它会根据32位或64位代码自动调整大小。