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  
  • 相关阅读:
    PAT (Advanced Level) Practice 1071 Speech Patterns (25分)
    PAT (Advanced Level) Practice 1070 Mooncake (25分)
    PAT (Advanced Level) Practice 1069 The Black Hole of Numbers (20分)
    PAT (Advanced Level) Practice 1074 Reversing Linked List (25分)
    PAT (Advanced Level) Practice 1073 Scientific Notation (20分)
    第一次冲刺个人总结01
    构建之法阅读笔记01
    人月神话阅读笔记01
    四则运算2
    学习进度条(软件工程概论1-8周)
  • 原文地址:https://www.cnblogs.com/shengel/p/863723.html
Copyright © 2011-2022 走看看