intptr 型別被設計成整數,其大小適用於特定平台。即是說,此型別的例項在 32 位硬體和作業系統中將是 32 位,在 64 位硬體和作業系統上將是 64 位。
intptr 型別可以由支援指標的語言使用,並可作為在支援與不支援指標的語言間引用資料的一種通用方式。
intptr 物件也可用於保持控制代碼。例如,intptr 的例項廣泛地用system.io.filestream 類中來保持檔案控制代碼。
intptr 型別符合 cls,而 uintptr 型別卻不符合。只有 intptr 型別可用在公共語言執行庫中。uintptr 型別大多數是提供來維護與 intptr 型別之間的體系結構上的對稱性。
例: 乙個c#程式呼叫win32api mcisendstring函式控制光碟驅動器,這個函式的函式原型是:
mcierror mcisendstring(
lpctstr lpszcommand,
lptstr lpszreturnstring,
uint cchreturn,
handle hwndcallback);
首先在c#中宣告這個函式:
[dllimport("winmm.dll")]
private static extern long mcisendstring(string a,string b,uint c,intptr d);
然後用這樣的方法呼叫:
mcisendstring("set cdaudio door open", null, 0, this.handle);
也可以使用intptr.zero將控制代碼設定為0;
或者使用型別強制轉換:
mcisendstring("set cdaudio door open", null, 0, (intptr)0 );
或者,使用intptr建構函式:
intptr a = new intptr(2121);
注意:一、在c#中宣告win32api時,一定要按照winapi的原型來宣告,不要改變它的資料型別;
二、盡量不要過多使用型別強制轉換或建構函式的方式初始化乙個intptr型別的變數,這樣會使程式變得難於理解並容易出錯
**
ThreadLocal是什麼?怎麼用?
threadlocal用於儲存某個執行緒共享變數 對於同乙個static threadlocal,不同執行緒只能從中get,set,remove自己的變數,而不會影響其他執行緒的變數。簡單的使用 public class threadlocaltestpublic class mytest exte...
Context是什麼,怎麼用
開始學安卓的時候發現經常有context,但是都不知道為什麼,什麼時候需要它。官方文件概述 關於應用程式環境的全域性資訊的介面。這是乙個抽象類,它的實現是由安卓系統提供的。它允許訪問應用程式特定的資源和類,以及應用級的操作,如啟動活動,廣播和接收的意圖,等等。我感覺可以把context比喻成乙個遊樂...
RESTful是什麼,為什麼用,怎麼用
restful是什麼 其實restful絕大部分內容都是關於api設計時規範推薦的做法,並沒有新東西。只要符合rest設計原則的api都可以被稱為restful。restful的核心就是後端將資源發布為uri,前端通過uri訪問資源,並通過http動詞表示要對資源進行的操作。這裡涉及到乙個新概念 資...