什么是手柄?IntPtr的

Min*_*wth 8 .net c# handle intptr

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

Meh*_*dad 6

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


Ree*_*sey 6

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

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

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