zoukankan      html  css  js  c++  java
  • tryParse, try/catch(Parse), Convert比较

    只是一个别人写的文章精简一下,原文在这里:http://blogs.msdn.com/ianhu/archive/2005/12/19/505702.aspx

    话不多,直接上代码:

    代码
    private List<Int32> TestParse(String[] strings)

    {

    Int32 intValue;

    List
    <Int32> intList = new List<int>();

     

    for (int i = 0; i < 5000000; i++)

    {

    intList.Clear();

     

    foreach (String str in strings)

    {

    try

    {

    intValue 
    = Int32.Parse(str);

    intList.Add(intValue);

    }

     

    catch (System.ArgumentException)

                         { }

     

                         
    catch (System.FormatException)

                         { }

     

                         
    catch (System.OverflowException)

                 { }

    }

     

    }

     

    return intList;

    }

     

    private List<Int32> TestTryParse(String[] strings)

    {

    Int32 intValue;

    List
    <Int32> intList = new List<int>();

    Boolean ret;

     

    for (int i = 0; i < 5000000; i++)

    {

    intList.Clear();

     

    foreach (String str in strings)

                         {

                               ret 
    = Int32.TryParse(str, out intValue);

                         
    if (ret)

                         {

                                      intList.Add(intValue);

                         }

                 }

           }

     

           
    return intList;

    }

     

    private List<Int32> TestConvert(String[] strings)

    {

    Int32 intValue;

    List
    <Int32> intList = new List<int>();

     

    for (int i = 0; i < 5000000; i++)

    {

    intList.Clear();

     

    foreach (String str in strings)

    {

    try

    {

    intValue 
    = Convert.ToInt32(str);

    intList.Add(intValue);

    }

     

    catch (System.FormatException)

    { }

     

    catch (System.OverflowException)

    { }

    }

    }

     

    return intList;

    }

    测试正确数据:

    { "123", "4567", "7890", "1", "1231280", "10" }.

     

    三者性能差不多。

    测试错误数据:

    { "12345", null, "123", "1324dfs", "51235", String.Empty, "43", "4123412341234123412341234123412341234123" }.

     

    如图所见:tryParse>Convert>Parse

    原因在于Convert跟Parse要进行异常处理,尤其是Parse的ArgumentNullException处理开销很大。

    总结:

    在没特殊需求的情况下强烈建议使用tryParse

  • 相关阅读:
    ASP.NET自动给URL加上超链接
    EXCEL隔行相加
    数据库 行列相互转化
    SQL获取所有用户名,数据库名、所有表名、所有字段名及字段类型
    C#中,Dictionary的使用方法
    NET技术.NET各大网站编程技术网址
    多表查询不同数据库服务器上的表
    关于quotename的用法
    SQL Server2005 异常处理机制(Begin try Begin Catch)
    C#异步调用与线程总结
  • 原文地址:https://www.cnblogs.com/kiracn/p/1660441.html
Copyright © 2011-2022 走看看