使用tryparse而不是parse避免try-catch

时间:2013-03-05 09:27:02

标签: c# parsing try-catch

在我的代码的很多地方我都有这个:

try
{
    price = double.Parse(sPrice.Replace(",", "."), CultureInfo.InvariantCulture);
}
catch
{
    price  = 0;
}

我在某处读到如果在try块中抛出异常,则需要花费很多时间才能被捕获。

所以,我想使用tryparse而不是parse,就像这样:

if (!double.TryParse(sPrice, out price))
{
     price  = 0;
}

这是一个好习惯吗?会花更少的时间吗?

2 个答案:

答案 0 :(得分:3)

是的,TryParse更快。

然而,这对我来说有点过早的优化,除非你期望在一个包含许多无效输入字符串的紧密循环中调用Parse

您应该选择不依赖于速度,而是根据要求以及您希望获得的数据类型。另外,请考虑另一种选择:Convert.ToDouble

答案 1 :(得分:1)

我觉得使用TryParse

有两个好处
  1. try.. catch...
  2. 相比,速度很快
  3. 您的变量中始终有值,您要分配的值或默认值。因此,一旦将变量传递给TryParse
  4. ,就可以直接使用它