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  
  • 相关阅读:
    [转].net mvc + vuejs 的项目结构
    Outlook IMAP 修改PST文件存储路径
    VS2017 性能优化方法
    查询存储过程所需参数
    如何保障微服务架构下的数据一致性
    sqlserver批量给用户配置存储过程权限
    vue中刷新当前页面或重新加载的两种方法
    vue history模式下的微信支付,及微信支付授权目录的填写,处理URL未注册
    Vue 四行代码实现无感知上拉加载更多
    2019年前端必用正则(js)
  • 原文地址:https://www.cnblogs.com/shengel/p/863723.html
Copyright © 2011-2022 走看看