首页 > 编程知识 正文

intptr转byte数组,intp的t是什么

时间:2023-05-05 20:38:19 阅读:36465 作者:3012

一、IntPtr是什么

首先,让我们看看:在MSDN中用于表示指针或句柄的特定于平台的类型。 这表明了两个事实: IntPtr是平台特定的类型,可用于表示指针和句柄。

C#的IntPtr类型称为“特定于平台的整数类型”,用于窗口句柄等本机资源。 资源的大小取决于所使用的硬件和操作系统,但足够大以包含指向系统的指针。 因此,也可以包括资源的名称。 因此,要调用的API函数必须具有类似表单句柄的参数,因此在声明函数时必须将其显式声明为IntPtr类型。 例如,在C#程序中调用Win32API mciSendString函数来控制磁盘驱动器。 此函数的原型是mcierrormcisendstring (lpctstrlpszcommand,lptstr lpsz返回字符串,uintccccand ),首先在C#中声明此函数。 [dllimport(winmm.dll ) ]隐私保护语言语言mcisendstring (stringa、string b、uint c、IntPtr d ); 然后,用以下方法调用: mcisendstring (setcdaudiodooropen )、null、0和this.Handle。 也可以使用IntPtr.Zero将句柄设置为0。 或使用类型强制转换: mcisendstring (' setcdaudiodooropen ',null,0,(IntPtr )0); 或者,使用IntPtr构造函数。 intptra=newintptr(2121;

二、这里有两点很重要。 另一方面,用C#声明Win32API时,请务必按照WinAPI的原型进行声明,不要改变其数据类型。 2、在不太使用类型强制转换和构造函数的情况下初始化IntPtr类型的变量,程序变得不容易理解,容易发生错误。

三、在哪里使用

(1) C#调用WIN32 API时

)2)当C#调用用C/C编写的DLL时(实际上与1相同,但这通常在我们与他人合作开发时很常用)。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。