parsing诉TryParse

Parse()和TryParse()有什么区别?

int number = int.Parse(textBoxNumber.Text); // The Try-Parse Method int.TryParse(textBoxNumber.Text, out number); 

是否有一些forms的错误检查像Try-Catch块?

Parse抛出一个exception,如果它不能parsing的价值,而TryParse返回一个bool值,指示它是否成功。

TryParse不只是在内部try / catch – 它的全部重点是它没有例外的实现,所以它很快。 事实上,最可能实现的方式是在内部, Parse方法将调用TryParse ,然后在返回false引发exception。

简而言之,如果您确定该值是有效的,请使用Parse ; 否则使用TryParse

如果string不能被转换为整数,那么

  • int.Parse()会抛出一个exception
  • int.TryParse()将返回false(但不会抛出exception)

TryParse方法允许你testing是否有可parsing的东西。 如果尝试使用无效int的第一个实例Parse,则在TryParse中会得到一个exception,它将返回一个布尔值,让您知道parsing是否成功。

作为一个脚注,将null传递给大多数TryParse方法将引发exception。

TryParse和例外税

如果从string到指定数据types的转换失败,则Parse抛出exception,而TryParse显式避免抛出exception。

TryParse不返回值,它返回一个状态码来表示parsing是否成功(并且不会引发exception)。

为了logging,我正在testing两个代码:只是试图从一个string转换为一个数字,如果失败,则将数字赋值为零。

  if (!Int32.TryParse(txt,out tmpint)) { tmpint = 0; } 

和:

  try { tmpint = Convert.ToInt32(txt); } catch (Exception) { tmpint = 0; } 

对于C#来说,最好的select是使用tryparse,因为try&catch可能会抛出exception

 A first chance exception of type 'System.FormatException' occurred in mscorlib.dll 

然而,这是痛苦的缓慢和不受欢迎的,但是,代码不会停止,除非debugging的例外是解决停止与它。

我知道它是一个很老的post,但是想到在Parse vs TryParse上分享一些更多的细节。

我有一个场景,需要将DateTime转换为String,如果datevalue为null或string.empty,则我们正面临exception。 为了克服这个问题,我们用TryParsereplace了Parse,并得到默认的date。

旧代码:

 dTest[i].StartDate = DateTime.Parse(StartDate).ToString("MM/dd/yyyy"); dTest[i].EndDate = DateTime.Parse(EndDate).ToString("MM/dd/yyyy"); 

新代码:

 DateTime startDate = default(DateTime); DateTime endDate=default(DateTime); DateTime.TryParse(dPolicyPaidHistories[i].StartDate, out startDate); DateTime.TryParse(dPolicyPaidHistories[i].EndDate, out endDate); 

必须声明另一个variables并将其用作TryParse的Out。

double.Parse( “ – ”); 引发exception,而double.TryParse(“ – ”,出parsing); parsing为0,所以我想TryParse做更复杂的转换。