zoukankan      html  css  js  c++  java
  • 字符串转换成整型,到底使用int.Parse,Convert.ToInt32还是int.TryParse?

    当我们想把一个字符串转换成整型int的时候,我们可能会想到如下三种方式:int.Parse,Convert.ToInt32和int.TryParse。到底使用哪种方式呢?

    先来考虑string的可能性,大致有三种可能:
    1、为null
    2、不是整型,比如是字符串
    3、超出整型的范围

    基于string的三种可能性,分别尝试。

    □ 使用int.Parse

    string str = null;
    
    int result;
    
    result = int.Parse(str);

    以上,抛出ArgumentNullException异常。

    string str = "hello";
    
    int result;
    
    result = int.Parse(str);

    以上,抛出FormatException异常。

    string str = "90909809099090909900900909090909";
    
    int result;
    
    result = int.Parse(str);

    以上,抛出OverflowException异常。

    □ 使用Convert.ToInt32

            static void Main(string[] args)
    
            {
    
                string str = null;
    
                int result;
    
                result = Convert.ToInt32(str);
    
                Console.WriteLine(result);
    
                Console.ReadKey();
    
            }

    以上,显示0,即当转换失败,显示int类型的默认值,不会抛出ArgumentNullException异常。
            static void Main(string[] args)
    
            {
    
                string str = "hello";
    
                int result;
    
                result = Convert.ToInt32(str);
    
                Console.WriteLine(result);
    
                Console.ReadKey();
    
            }

    以上,抛出FormatException异常。

            static void Main(string[] args)
    
            {
    
                string str = "90909809099090909900900909090909";
    
                int result;
    
                result = Convert.ToInt32(str);
    
                Console.WriteLine(result);
    
                Console.ReadKey();
    
            }

    以上,抛出OverflowException异常。

    □ 使用int.TryParse

            static void Main(string[] args)
    
            {
    
                string str = null;
    
                int result;
    
                if (int.TryParse(str, out result))
    
                {
    
                    Console.WriteLine(result);
    
                }
    
                else
    
                {
    
                    Console.WriteLine("转换失败");
    
                }
    
                
    
                Console.ReadKey();
    
            }

    结果:转换失败

    总结:当需要捕获具体的转换异常的时候,使用int.Parse或Convert.ToInt32,而当string为null,Convert.ToInt32不会抛出ArgumentNullException异常;当只关注是否转换成功,推荐使用int.TryParse。当然,以上也同样适合其它值类型转换,比如decimal, 也有decimal.Parse,Convert.ToDecimal和decimal.TryParse。   

  • 相关阅读:
    Redis五种数据类型操作命令
    MySQL单表数据量过千万,采坑优化记录,完美解决方案
    并行的执行效率一定高于串行吗?(多线程的执行效率一定高于单线程吗?)
    Swagger2安装及使用
    MySQL单表多次查询和多表联合查询,哪个效率高?
    Java集合时间复杂度
    JAVA中常见集合的扩容
    ant design vue 之 rowKey浏览器报警告
    ant design vue中表格自带分页如何使用
    ant design vue 中表格的使用中,表格选中之后没有状态
  • 原文地址:https://www.cnblogs.com/darrenji/p/4358926.html
Copyright © 2011-2022 走看看