decimal.TryParse和Convert.ToDecimal+try{} catch{}的性能比较

Posted lywu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了decimal.TryParse和Convert.ToDecimal+try{} catch{}的性能比较相关的知识,希望对你有一定的参考价值。

先说结论:decimal.TryParse性能远远超过try{} catch{},毕竟异常处理非常耗时间,至于decimal.TryParse的内部实现还不清楚,等项目结束再做调查。

源码:

using System;
using System.Diagnostics;

namespace ConsoleApp2
{
    class Program
    {
        static void Main(string[] args)
        {
            decimal result;
            string value = "test";
            Stopwatch stopwatch = new Stopwatch();
            stopwatch.Start();
            for (int i = 0; i < 10000; i++)
            {
                result = decimal.TryParse(value.ToString(), out result) ? result : 0;
            }
            stopwatch.Stop();
            Console.WriteLine(stopwatch.Elapsed.TotalMilliseconds);
            stopwatch.Start();
            for (int i = 0; i < 10000; i++)
            {
                try
                {
                    result = Convert.ToDecimal(value);
                }
                catch
                {
                    result = 0;
                    continue;
                }
            }
            stopwatch.Stop();
            Console.WriteLine(stopwatch.Elapsed.TotalMilliseconds);
            Console.ReadLine();
        }
    }
}

输出:

技术图片

 

以上是关于decimal.TryParse和Convert.ToDecimal+try{} catch{}的性能比较的主要内容,如果未能解决你的问题,请参考以下文章

c#里的decimal.TryParse方法怎么用,我是新手,求大神用通俗易懂的话尽量详细一点说明白谢谢

如何解析带有欧元货币符号的数字字符串? [复制]

十进制数的正则表达式

convert和change区别

cast和convert的区别

sql 中convert和cast区别