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】 可以转载,但请注明出处并保持博客超链接,有不正确的地方请不吝赐教,谢谢大家的帮助与支持!
  • 相关阅读:
    Xamarin.Forms的ActivityIndicator和ProgressBar比较
    SSL剥离工具sslstrip
    服务器SSL/TLS快速检测工具TLLSSLed
    网站robots.txt探测工具Parsero
    采集网站特殊文件Meta信息
    海量端口扫描工具masscan
    Uip + Stm32移植问题总结【转】
    Micro Python 嵌入式以太网社区
    TEA加密算法的C/C++实现
    STM32F4系列外设驱动【不再更新】
  • 原文地址:https://www.cnblogs.com/ithuo/p/4685702.html
Copyright © 2011-2022 走看看