zoukankan      html  css  js  c++  java
  • 类型强制转换

    不知道大家注意到没有,.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应该在什么时候来使用?  

    后面两个其实是一个意思,基本类型是不能用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会变成13

    如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  
  • 相关阅读:
    MySQL5.6.26升级到MySQL5.7.9实战方案【转】
    bootstrap-markdown编辑器引入
    yii获取当前url和域名
    RabbitMQ消息队列在PHP下的应用
    解决 PHPExcel 长数字串显示为科学计数
    Linux实现https方式访问站点
    layui关闭弹出层
    vscode中iframe的使用
    tomcat运行超时问题解决
    Linux安装solr
  • 原文地址:https://www.cnblogs.com/shengel/p/863723.html
Copyright © 2011-2022 走看看