CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

类型强制转换

楼主ivsm(走在乡间的小路上)2006-03-07 15:15:27 在 .NET技术 / C# 提问

不知道大家注意到没有,.Net几种类型转换的方式,实现的机制好象不太一样  
  //一种  
  double   a=12.3;  
  int   b=(int)a;  
  --通过语法检查,执行结果是12  
   
  //二种  
  double   a=12.3  
  int   b=Int32.Parse(a.ToString())  
  --通过语法检查,执行出错,异常信息:输入的字符串格式不正确  
   
  //三种  
  double   a=12.3  
  int   b=(int)new   TypeConvert().ConvertTo(a,typeof(int))  
  --通过语法检查,执行出错,异常信息:类型Int不能转换为double  
   
  //四种  
   
  double   a=12.3  
  int   b=a   as   int  
  --编译通不过    
   
      通过上面几个示例的描述,我们看出采用不同的方法进行类型转换的效果明显不同,那我们平常在编程当中,到底应该采用那种方式进行类型的转换呢?为什么同样的输出会有那么不同的输出,他们的内部到底是怎么进行转换的.不知道有没有人对此进行探索?  
      TypeConvert应该在什么时候来使用?  
       
   
   
  问题点数:20、回复次数:6Top

1 楼raulredondo()回复于 2006-03-07 17:59:54 得分 0

后面两个其实是一个意思,基本类型是不能用as来转换的,as其实是拆箱  
   
  int   b=(int)a;  
  这个和c里面是一个意思,截取整数,12.99会变成12  
   
  int   b=Int32.Parse(a.ToString())  
  a.ToString返回"12.3",带小数的字符串转换的时候会报错,再说这个画蛇添足了  
  int.Parse是用来把字符串转换成整形的  
   
  还有一种Convert.ToInt32()  
  这个会四舍五入,比如12.99会变成13Top

2 楼viena(维也纳N02)回复于 2006-03-07 18:19:11 得分 0

晕  
  Top

3 楼mb459()回复于 2006-03-07 18:26:20 得分 0

真复杂,楼主研究的真细Top

4 楼hansmile1(笑府主人)回复于 2006-03-07 19:15:52 得分 20

第三种应该是Convert.toxx(xxx)Top

5 楼luqinghua(Action)回复于 2006-03-07 21:50:32 得分 0

如1.0000类型的数据必须经过2次装箱才能转化为整型的   1  
  如果直接进行转化的话就会报错:  
  string   str   =   "1.0000";  
  int   IntConvert   =   Convert.ToInt32(str   );  
  就会报错  
  而:  
  string   str   =   "1.0000";  
  double   douConvert   =   double.Parse(str);  
  int   IntConvert   =   Convert.ToInt32(douConvert);  
  就OK  
  Top

6 楼ivsm(走在乡间的小路上)回复于 2006-03-07 23:10:44 得分 0

哈,   不是我突然想到这个问题的,因为我在做具体解决方案时遇到的  
  所以如果需要编写一个这样的函数  
  ConvertTo(object   o,type   desType)  
  是不是需要对基本类型进行单独处理  
  第二就是判断srcType   is   desType,来判断是否可以转换  
  第三步来根据srcType获得CustomerAttitudes,找到srcType   对应的TypeConvert,用TypeConvert来进行转换  
  如果进过以上三步转换还不成功,就提示转换失败  
  不知道怎么做是否可行!?Top

相关问题

  • 强制类型转换
  • 关于强制类型转换
  • 急,javascript强制类型转换string -》 int
  • 强制类型转换与重载!!!
  • 关于强制类型转换
  • vb中的强制类型转换
  • C++中的强制类型转换
  • 关于数据类型强制转换。。
  • 对象类型强制转换?
  • 强制类型转换的问题

关键词

  • 转换
  • 语法
  • 检查
  • 执行
  • 类型
  • 语法检查
  • parse
  • double
  • 不同
  • tostring

得分解答快速导航

  • 帖主:ivsm
  • hansmile1

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo