2011-04-14 87 views
7

我一直在讀IntPtr,並且已經讀過它用來表示Handle(s)。這是什麼意思?我相信這是一個簡單的解釋,但燈泡目前只是沒有打開..什麼是句柄? IntPtr

+0

重複的問題:http://stackoverflow.com/questions/1148177/just-what-is-an-intptr-exactly – HABJAN 2011-04-14 18:03:22

+0

@Habjan:不完全。 OP在詢問句柄,而這個問題是關於'IntPtr'的問題。 – Mehrdad 2011-04-14 18:04:24

+0

[HANDLE指向的結構的可能的重複。](http://stackoverflow.com/questions/5343660/struct-which-a-handle-points-to) – Gabe 2011-04-14 18:06:35

回答

6

這通常是指操作系統句柄,並在內部使用。例如,Windows窗體使用IntPtr來引用該控件的本機窗口句柄(HWND)。

Windows API中的句柄用於很多事情 - 大多數與操作系統有關的資源(文件,套接字,窗口等)都通過句柄公開,這個句柄實際上是一個指針。在託管代碼中,它存儲在IntPtr中。

也就是說,IntPtr也經常用於在互操作場景中存儲指針,因爲它會根據32位或64位代碼自動調整大小。

+0

+!用於Windows API方法中最常用的HWND。這真的是一個非常好的答案。 – 2011-04-14 18:19:59

6

「句柄」是一個「不透明的指針」。它是一個值(通常只是一個數組的索引),操作系統會將它提供給應用程序來表示內部對象,而不是給它一個指向實際對象的指針。這是出於安全和抽象的原因 - 它強制應用程序只能通過提供的API使用句柄。