• Convert、Parse、TryParse、(int)等区别


    Convert.ToInt32、int.Parse(Int32.Parse)、int.TryParse、(int) 四者都可以解释为将类型转换为 int,那它们的区别是什么呢?


    Convert.ToInt32 与 int.Parse 较为类似,实际上 Convert.ToInt32 内部调用了 int.Parse:

        * Convert.ToInt32 参数为 null 时,返回 0;
        * int.Parse 参数为 null 时,抛出异常。
        *
        * Convert.ToInt32 参数为 "" 时,抛出异常;
        * int.Parse 参数为 "" 时,抛出异常。
        *
        * Convert.ToInt32 可以转换的类型较多;
        * int.Parse 只能转换数字类型的字符串。

    Convert.ToInt32()与int.Parse()的区别(1)这两个方法的最大不同是它们对null值的处理方法:
    Convert.ToInt32(null)会返回0而不会产生任何异常,但int.Parse(null)则会产生异常。

    没搞清楚Convert.ToInt32和int.Parse()的细细微区别时千万别乱用,否则可能会产生无法预料的结果,举例来说:假如从url中取一个参数page的值,我们知道这个值是一个int,所以即可以用 Convert.ToInt32(Request.QueryString["page"]),也可以用,int.Parse(Request.QueryString["page"]),但是如果page这个参数在url中不存在,那么前者将返回0,0 可能是一个有效的值,所以你不知道url中原来根本就没有这个参数而继续进行下一下的处理,这就可能产生意想不到的效果,而用后一种办法的话没有page 这个参数会抛出异常,我们可以捕获异常然后再做相应的处理,比如提示用户缺少参数,而不是把参数值当做0来处理。

    (2)还有一点区别就是
    a. Convert.ToInt32(double value)
    如果 value 为两个整数中间的数字,则返回二者中的偶数;即 3.5转换为4,4.5 转换为 4,而 5.5 转换为 6。 不过4.6可以转换为5,4.4转换为4
    b. int.Parse("4.5")
    直接报错:"输入字符串的格式不正确".

    c. int(4.6) = 4
    Int转化其他数值类型为Int时没有四舍五入,强制转换

    int.Parse是转换String为int
    Convert.ToInt32是转换继承自Object的对象为int的.
    你得到一个object对象,你想把它转换为int,用int.Parse就不可以,要用Convert.ToInt32.

    个人总结:
    (1)Convert.ToInt32的参数比较多,Int.Parse只能转换string类型的.
    (2)Parse就是把String转换成int,char,double....等,也就是*.Parse(string) 括号中的一定要是string.
    (3)Convert可以提供多种类型的转换,也就是Convert.*()括号中可以为很多种类型(包括string).

    int.TryParse 与 int.Parse 又较为类似,但它不会产生异常,转换成功返回 true,转换失败返回 false。最后一个参数为输出值,如果转换失败,输出值为 0。

    int m;
    if(int.TryParse("2"),out m)
    {
    ...
    }
    返回true ,运行{}内,并给m赋值为2;

     if(int.TryParse("ddd"),out m)
    {
    ...
    }
    返回false,不运行if{}内,并给m赋值为0;

    (int) 属 cast 转换,只能将其它数字类型转换成 int 类型,它不能转换字符串,比如下例就会失败:
    string v = "1";
    int n = (int)v;

  • 相关阅读:
    一个cs架构的在线考试系统
    TreeComboBox控件范例
    new和override修饰符的区别
    Hello cnblogs
    MapInfo图层坐标系统转换
    C#调用新浪微博API生成RSS资源文件
    MapInfo图层格式转ArcGIS图层格式
    用ArcGIS的ArcToolbox进行地图切割
    VS2008智能提示消失的解决方法
    【学习笔记】零基础C#窗口程序开发入门
  • 原文地址:https://www.cnblogs.com/chehaoj/p/1671953.html
Copyright © 2020-2023  润新知