zoukankan      html  css  js  c++  java
  • C#中转换函数Convert、Parse、TryParse、(int) 的区别

    Convert、Parse、TryParse、(int) 三个函数都是将值转换成整数,但是四者之间各有异同,开发人员可以根据情况选用最合适的。以下解释均经过高人验证,希望对大家有所帮助。 

    1 (int)变量名[强制类型转换]: 

         该转换方式主要用于数字类型转换,从int类型到long,float,double,decimal类型,可以使用隐式转换,但是从long类型到int类型就需要使用显式转换,也就是该数据类型转换方式,否则会产生编译错误。 

          该方式对于浮点数会做无条件舍去,失去精确度 

          当然,该方式也可以进行object到int得转换,但是,object的值要赋予int类型的值,否则会产生编译错误,而且object为null时也会出错。 

          最后切忌的一点,千万不要用来处理char类型到int类型的转换,否则传回的的值是ASCII代码,而并不是你想要的值。 

    2 int.Parse(string类型变量名) 

           该方式是将数字内容的字符串转为int类型,如果字符串内容为空或者null时,则抛出ArgumentNullException异常;如果字符串内容不是数字,则抛出FormatException异常;如果字符串内容所表示数字超出int类型可表示的范围,则抛出OverflowException异常。 

          使用该方法切忌的一点就是只能处理字符串内容,而且字符串内容只能在int类型可表示的范围之内。 

    3 int.TryParse(string s, out int result) 

          该方式也是将数字内容的字符串转为int类型,但是该方式比int.Parse优越的地方,就是它不会出现异常。如果转换成功返回 true,如果转换失败返回 false。很明显,最后一个参数为输出值,如果转换失败,输出值为 0;如果转换成功,则输出相应的值。

     4 Convert.ToInt32 

          该方式不仅可以将字符串转为int类型,还可以将其它类型的值转成int类型。变量若为object或string类型,当其值为null时,会传回0,不会造成程序错误,但是若此string类型的值为string.Empty,在转型成int时,仍会造成程序错误。     该方式对于浮点数会做四舍五入。 

        该方式同强制转换一样,不能用来处理char类型,否则传回的是ASCII代码。

    转自:http://www.blue1000.com/bkhtml/c17/2013-07/71292.htm

    可以自己写一个转换函数减少代码量

    //判断一个object是否为Null
            public static bool IsObjectNull(object value)
            {
    
                if (value == null || value == DBNull.Value || value.ToString() == "")
                {
                    return true;
    
                }
                else
                {
                    return false;
                }
    
    
            }
            //获取一个object的decimal
            public static decimal GetDecimal(object value)
            {
                try
                {
                    decimal temp = 0;
                    if (value == null || value == DBNull.Value || value.ToString() == "")
                    {
                        return 0;
    
                    }
                    else
                    {
                        temp = decimal.Parse(value.ToString());
                    }
                    return temp;
                }
                catch (Exception e)
                {
                    return 0;
                }
    
            }
  • 相关阅读:
    java语言中public、private、protected三个关键字的用法,重写和重载的区别。
    MVC模式中M,V,C每个代表意义,并简述在Struts中MVC的表现方式。
    abstract class和interface有什么区别?
    简单说明什么是递归?什么情况会使用?并使用java实现一个简单的递归程序。
    在项目中用过Spring的哪些方面?及用过哪些Ajax框架?
    简述基于Struts框架Web应用的工作流程
    List、Map、Set三个接口存储元素时各有什么特点?
    mybatis查询时间段sql语句
    Maven pom.xml中添加指定的中央仓库
    为什么需要RPC,而不是简单的HTTP接口
  • 原文地址:https://www.cnblogs.com/zhaogaojian/p/10111794.html
Copyright © 2011-2022 走看看