问: 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”相关推荐

  1. 无法将类型int隐式转换为string_Scala implicit 隐式转换安全驾驶指南

    这篇短文将结合实例对隐式转换的各种场景进行解释和总结,希望看完的人能够安全驶过隐式转换这个大坑. 隐式转换函数 隐式转换函数有两种作用场景. 1 转换为期望类型:就是指一旦编译器看到X,但需要Y,就会 ...

  2. using 语句中使用的类型必须可隐式转换为“System.IDisposable“

    在开发中遇到这种问题好几次了,一直没有记录,现在记录下来,方便以后查看 这个问题一般是添加新项目之后出现,原因是没有添加 "System.Data.Entity" 的引用造成 添加 ...

  3. 无法将类型“string”隐式转换为“char

    我刚开始学C#,在一本书上看见以下例子, 运行有错误,RT: 代码如下: using System; using System.Collections.Generic; using System.Te ...

  4. 如何解决:出现无法将类型“xx”隐式转换为xx的错误

    前言: 相信很多小伙伴在刚入门的时候遇到的问题最多的就是此类问题了吧,但是每次都会找半天才会发现问题的所在,今天就码一篇如何快速找到此类问题的原因的文章. 问题原因: <一>赋值时两边的值 ...

  5. SQL中int类型与varchar类型的隐式转换

    如果你对SQL使用的经验不是足够丰富,如果你在SQL中解决的问题不够多,请认真看完本章,它可以让你避免一个很可能经常会犯的错误! 我们先创建一个测试表 create table #table1 ( i ...

  6. C++中的operator主要有两个作用,一是操作符的重载,一是自定义对象类型的隐式转换。

    C++中的operator主要有两个作用,一是操作符的重载,一是自定义对象类型的隐式转换.对于操作符的重载,许多人都不陌生,但是估计不少人都不太熟悉operator的第二种用法,即自定义对象类型的隐式 ...

  7. JavaScript 类型的隐式转换

    JavaScript各种类型的隐式转换,一直没理出个头绪来,每次碰到都是得过且过,没有深究.今天读<JavaScript权威指南>,借其中章节一用,只为搞个明白. 一.布尔类型转换 布尔值 ...

  8. 关于类类型的隐式类型转换

    1.若构造函数只接受一个实参,则它实际上定义了转换为此类类型的隐式转换机制,这种构造函数又称作转换构造函数. 2.能通过一个实参调用的构造函数定义了该参数类型向类类型隐式转换的规则.也就是说,若定义了 ...

  9. java中的缩小_在Java中,加宽转换(隐式)和缩小转换(显式)之间有什么区别?...

    Java中的类型转换用于将一种类型的对象或变量转换为另一种类型.当我们将一种数据类型转换或分配给另一种数据类型时,它们可能不兼容.如果合适的话,它将顺利进行,否则会丢失数据. Java中的类型转换类型 ...

最新文章

  1. scrapy第一发——基础巩固
  2. find the most comfortable road
  3. jquery : 动态构建表单自动提交请求
  4. NOIP2018-普及参赛总结
  5. 4问教你搞定java中的ThreadLocal
  6. linux ora 27125,ORA-27125 unable to create shared memory segment | 信春哥,系统稳,闭眼上线不回滚!...
  7. php c 交互,C语言和go语言之间的交互操作方法
  8. Transformers资料汇总,从概要到原理到应用
  9. vscode插件之php插件koroFileHeader(自动生成注释)
  10. Android MMKV框架引入使用
  11. Deepin 深度Linux系统安装教程
  12. 普渡大学电子计算机专业,普渡大学最热门专业,了解一下?
  13. 前端正则表达式指定邮箱域名匹配
  14. java的time_Java TimeUnit使用
  15. VPN、IPSEC、AH、ESP、IKE、DSVPN
  16. 自动化手工操作工具PyAutoGUI :鼠标操作
  17. RFI_2016_12_18
  18. 对联基本格律的六要素
  19. 页面禁止用户输入中文实现方式
  20. 演示:设置密码长度限制、密码加强

热门文章

  1. 14.理解copy_if算法的正确实现
  2. 思科模拟器,计算机网络实验三之:静态路由配置
  3. c++ primer 5th,习题13.3 答案是不是错了?(未解决)
  4. 问题:出现在哪个地方?关于map的搜索问题
  5. GF(2^8)上的多项式乘法(Matlab实现)
  6. java B锁_Java中15种锁的介绍
  7. ORACLE中的两个概念:user和schema的区别和联系
  8. SpringMVC以及SSM整合
  9. 21-matlab 迷宫题
  10. AGC016B Colorful Hats(构造)