回答
句柄是參考由OS或庫擁有的對象的間接方式。當操作系統或庫擁有一個對象但想讓客戶端引用它時,它可以提供對該對象稱爲句柄的引用。
手柄可以用不同的方式來實現。通常它們不是C++或C#意義上的引用。通常它們是指向某種不透明類型的指針,或者它們可能(或包含)索引到操作系統或庫所擁有的對象表中。
例如,在Windows中,如果您創建一個窗口,OS會創建一個代表該窗口的對象,但不會返回指向該對象的指針。相反,它返回一個窗口句柄,它提供了一個額外的間接層。當您在另一個OS調用中傳遞窗口句柄時,OS會根據句柄知道要使用哪個窗口對象。這可以防止你的代碼直接訪問窗口對象。
間接的額外層允許OS或庫做的事情一樣移動物體周圍,引用計數的對象,一般控制會發生什麼對象。與PIMPL成語一樣,實現可能會完全更改,同時仍保留原始API,因此不會強制客戶端重新編譯。這是特別有用的,如果你要提供書面的程序語言如C.爲客戶一個非面向對象的API
句柄是指針像文件句柄,數據庫連接手柄,手柄的窗戶等非託管資源......由於它們的句柄非託管資源,在大多數情況下,他們不會被自動收集垃圾,你需要確保正確釋放它們或者您可能會聽到有關泄漏手柄。
+1在Windows操作系統中,通常它們是2字節的整數,在託管代碼中,您可以使用它們IntPtr的。 – Jalal 2010-09-01 17:10:39
他們不一定是指針,雖然他們可以。它們是不透明的標識符。 – 2010-09-01 17:43:05
「handle」是參考的另一個名稱,該名稱由程序員顯式管理,而不是由運行時自動管理。
- 1. DEFAULT_COMPRESSION究竟是什麼?
- 2. cacert.pem究竟是什麼?
- 3. JSON-RPC究竟是什麼?
- 4. WPF究竟是什麼?
- 5. NoSQL究竟是什麼?
- 6. 「Sample」究竟是什麼?
- 7. ContextStaticAttribute究竟是什麼?
- 8. JSON究竟是什麼?
- 9. 究竟是什麼插座
- 10. targetSdkVersion究竟是什麼?
- 11. getGlobalVisibleRect()究竟是什麼?
- 12. 究竟是什麼#^:_ 1
- 13. WCF - 究竟是什麼?
- 14. Rest API究竟是什麼
- 15. this.id究竟是什麼?
- 16. Erlang OTP究竟是什麼?
- 17. selenese html究竟是什麼?
- 18. 資源究竟是什麼?
- 19. 究竟是什麼@ ViewDebug.ExportedProperty?
- 20. ViewUserControl.ViewDataKey究竟是什麼?
- 21. 究竟是什麼任務
- 22. Windows AppFabric究竟是什麼?
- 23. 「OAuth Provider」究竟是什麼?
- 24. Django Apps究竟是什麼
- 25. 究竟是MySQL中的「尾隨空間」究竟是什麼?
- 26. 究竟是什麼耙db:migrate做什麼?
- 27. 究竟是什麼`Function.prototype.length`的意思是?
- 28. 究竟是什麼ObjectFactory是什麼,它用於什麼?
- 29. visibleContentsAsDataURL究竟做了什麼?
- 30. pg_escape_string究竟幹什麼?
什麼是你聽說過這個詞的背景?這是一個非常普遍的術語,具有多重含義。 – 2010-09-01 17:09:08
可能的重複:http://stackoverflow.com/questions/1303123/what-is-a-handle-in-c – 2010-09-01 17:09:08