什么是句柄?IntPtr的作用是什么?

8

我一直在研究IntPtr,并了解到它用于表示句柄。这意味着什么?我相信这是一个简单的解释,但目前我的理解还不够清晰。


重复问题:https://dev59.com/4XM_5IYBdhLWcg3w9oWG - HABJAN
@Habjan:不完全正确。OP正在询问句柄,而那个问题是在询问IntPtr - user541686
可能是一个句柄指向的结构体的重复问题。 - Gabe
2个回答

8
这通常指操作系统句柄,并在内部使用。例如,Windows Forms使用IntPtr来引用控件的本地窗口句柄(HWND)。
在Windows API中,句柄用于许多事情 - 大多数操作系统相关资源(文件、套接字、窗口等)都通过句柄公开,这实际上是一个指针。在托管代码中,这些内容存储在IntPtr中。
话虽如此,在交互操作场景中,IntPtr也经常用于存储指针,因为它会根据32位或64位代码自动调整大小。

+1!对于在Windows API方法中最常用的HWND使用,这是一个非常好的答案。 - Security Hound

6

“句柄(handle)”是一种“不透明指针(opaque pointer)”。它是一个值(通常只是数组中的索引号码),操作系统将其分配给应用程序来表示内部对象,而不是给它指向实际对象的指针。这既是出于安全考虑,也是出于抽象化的原因——它强制应用程序只能通过提供的API来使用句柄(handle)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接