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

一、IntPtr是什么

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

C#的IntPtr类型称为“特定于平台的整数类型”,用于窗口句柄等本机资源。 资源的大小取决于所使用的硬件和操作系统,但足够大以包含指向系统的指针。 因此,也可以包括资源的名称。 因此,要调用的API函数必须具有类似表单句柄的参数,因此在声明函数时必须将其显式声明为IntPtr类型。 例如,在C#程序中调用Win32API mciSendString函数来控制磁盘驱动器。 此函数的原型是mcierrormcisendstring lpctstrlpszcommand,lptstr lpsz返回字符串,uintccccand ),首先在C#中声明此函数。 [dllimportwinmm.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=newintptr2121;

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

三、在哪里使用

1) C#调用WIN32 API时

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

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注