zoukankan      html  css  js  c++  java
  • Int.Parse()与Convert.toInt32和Int32.TryParse

    int类型表示一种整型,.NET Framework 类型为 System.Int32。而是用(int)表示显式强制类型转换,当从int 类型到 long、float、double 或decimal 类型,称为隐式转换;当从从double 或decimal、float、 long、int类型逐级转换时,称为显式强制类型转换。(对long 类型或是浮点型到int 类型的显式强制转换中使用,但是如果被转换的数值大于 Int32.MaxValue 或小于 Int32.MinValue,那么则会得到一个错误的结果)

    Int.Parse()表示将数字的字符串转换为32位有符号整数,属于内容转换。

    Convert.toInt32()表示可以将多种类型(包括 object  引用类型)的值转换为 int  类型。

    Int32.TryParse 与 int.Parse 又较为类似,但它不会产生异常,转换成功返回 true,转换失败返回 false。

    二、Int.Parse()与Convert.toInt32()的差别

       1、Int.Parse()当传入的是Null,将会抛出异常;Convert.toInt32()当传入的是Null,将返回0。

            例如:Int.Parse(null)抛出异常,Convert.toInt32(null)==0,返回true。

    2、Int.Parse()传入的是” ”,将会抛出异常;Convert.toInt32()传入的是” ”,也将抛出异常。

        例如:Int.Parse(“”)与Convert.toInt32(“”)都将抛出异常。

    3、性能差异:

    Int32.TryParse()优于Int32.Parse()优于Convert.ToInt32()。

    Convert.ToInt32会把最终的解析工作代理给Int32.Parse,而Int32.Parse和Int32.TryParse则分别把解析工作直接代理给Number.ParseInt32和Number.TryParseInt32,前者在出现解析,错误时会抛出异常,而后者则仅仅返回false。

    4、

    Convert.ToInt32(double value)
    如果 value 为两个整数中间的数字,则返回二者中的偶数;即 3.5转换为4,4.5 转换为 4,而 5.5 转换为 6。 不过4.6可以转换为5,4.4转换为4

    三、差别的常见例子:

    1、long   longtype=100;

        Int   inttype=longtype;     //错误的写法,因为没有进行显式强制转换

        Int   inttype=(int)longtype; //正确的写法

    2、string  stringtype=”12345”;

       Int   inttype=(int)stringtype;   //错误,string不能直接转换为int

       Int   inttype=Int.Parse(stringtype);  //正确

    3、   long longType = 100;
            string stringType = "12345";
            object objectType = "54321";
            int intType = Convert.ToInt32(longType);       //正确
            Int intType = Convert.ToInt32(stringType);     //正确
            int intType = Convert.ToInt32(objectType);    //正确

    4、double doubleType = Int32.MaxValue + 1.011; 

         int   intType = (int)doubleType;       //虽然运行正确,但是得出错误结果
         int  intType=Convert.ToInt32(doubleType) ; //抛OverflowException 异常 

    原文http://my.oschina.net/violetmoon/blog/60947

    【版权所有@ithuo】 【博客地址 http://www.cnblogs.com/ithuo】 可以转载,但请注明出处并保持博客超链接,有不正确的地方请不吝赐教,谢谢大家的帮助与支持!
  • 相关阅读:
    file is universal (3 slices) but does not contain a(n) armv7s slice error for static libraries on iOS
    WebImageButton does not change images after being enabled in Javascript
    ajax OPTION
    编程遍历页面上所有TextBox控件并给它赋值为string.Empty?
    获取海洋天气预报
    C#线程系列教程(1):BeginInvoke和EndInvoke方法
    js控制只能输入数字和小数点
    Response.AddHeader(,)
    ManualResetEvent的理解
    Convert.ToInt32、int.Parse(Int32.Parse)、int.TryParse、(int) 区别
  • 原文地址:https://www.cnblogs.com/ithuo/p/4685702.html
Copyright © 2011-2022 走看看