zoukankan      html  css  js  c++  java
  • Convert,Parse,TryParse数据转换比较

    数据string类型转换int的三种方式:

    1.Convert方法
    在C#中,int 关键字表示一种整型,是32位的,它的 .NET Framework 类型就是 System.Int32。
    因此string类型转换为int类型可以使用Convert.ToInt32()这个方法

                int num;
                num = Convert.ToInt32("123");
                Console.WriteLine(num);

    这里写图片描述
    可以看到这个可以成功转换。但万事总会有特殊情况:
    Eg 1:

                int num;
                num = Convert.ToInt32("123abc");
                Console.WriteLine(num);

    结果异常:
    这里写图片描述
    当我们不小心传入了123abc这个字符串,这个程序就会抛出异常为 System.FormatException:,是字符串的格式异常,这就需要去拦截异常影响了系统性能。

    Eg2:

                 int num;
                num = Convert.ToInt32(null);
                Console.WriteLine(num);

    这里写图片描述
    当我们不小心传入了null,结果为0。


    2.Parse方法
    int.Parse()方法也可以将string类型转为int类型。

                int num2;
                num2 = int.Parse("123");
                Console.WriteLine(num2);

    这里写图片描述
    从上面可以看到正常转换,下面说下特殊情况,当输入非数字组成的字符串时,此方法和Convert()方法一样会抛出异常:字符串的格式异常,这就需要我们使用时要去拦截异常,影响系统性能;输入null时结果不同:如下说明:

                int num2;
                num2 = int.Parse(null);
                Console.WriteLine(num2);

    这里写图片描述
    抛出异常System.ArgumentNullException,与Convert方法不同。

    上面的Convert.ToInt32()方法事实调用了int.Parse()这个方法,因此int.Parse()方法的性能高于Convert.ToInt32()方法.

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

                int num3 = 5;
                bool b = int.TryParse("123", out num3);
                Console.WriteLine(b + "	" + num3);

    这里写图片描述
    可以看大成功转换TRUE 123。
    Eg1.

                int num3 = 5;
                bool b = int.TryParse("123abc", out num3);
                Console.WriteLine(b + "	" + num3);

    这里写图片描述
    当传入为123abc字符串时转换失败为false,而且值时0不是我们初始赋的值。
    Eg2:

                int num3 = 5;
                bool b = int.TryParse(null, out num3);
                Console.WriteLine(b + "	" + num3);

    当传入为null时,结果与123abc相同。这里可以看到当使用方法int.TryParse()不会出现异常,系统性能会得到提高。

  • 相关阅读:
    [BZOJ1620][Usaco2008 Nov]Time Management 时间管理
    [BZOJ1634][Usaco2007 Jan]Protecting the Flowers 护花
    [BZOJ1725][Usaco2006 Nov]Corn Fields牧场的安排
    [BZOJ1708][Usaco2007 Oct]Money奶牛的硬币
    [BZOJ1690][Usaco2007 Dec]奶牛的旅行
    fzu 2132 LQX的作业
    fzu 2139 久违的月赛之二
    poj 1849 Two 树形dp
    师范大学 e: skyscrapers
    O(∩_∩)O~~
  • 原文地址:https://www.cnblogs.com/wangqilong/p/8337467.html
Copyright © 2011-2022 走看看