日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

c#中无法将类型“int”隐式转换为“System.IntPtr”

發布時間:2024/4/17 C# 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c#中无法将类型“int”隐式转换为“System.IntPtr” 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
問: c#中無法將類型“int”隱式轉換為“System.IntPtr” 這個是我引用了一個api函數時出現的問題,我在聲明中把intptr換成了int還是不可以,這是為什么呢?要如何處理呢? 答:您好,C#中的IntPtr類型稱為“平臺特定的整數類型”,它們用于本機資源,如窗口句柄。資源的大小取決于使用的硬件和操作系統,但其大小總是足以包含系統的指針(因此也可以包含資源的名稱)。 所以,在您調用的API函數中一定有類似窗體句柄這樣的參數,那么當您聲明這個函數時,您應該將它顯式地聲明為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類型的變量,這樣會使程序變得難于理解并容易出錯。 希望這些信息對您有幫助。 本文轉自:http://zhidao.baidu.com/question/22825956.html

轉載于:https://www.cnblogs.com/zq281660880/archive/2013/02/20/2918577.html

總結

以上是生活随笔為你收集整理的c#中无法将类型“int”隐式转换为“System.IntPtr”的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。