是什么之间的差异分析()和TryParse()?

int number = int.Parse(textBoxNumber.Text);

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

是有某种形式的错误检查等一试-抓住块?

有帮助吗?

解决方案

Parse抛出异常,如果它不能解析值,而TryParse返回一个指示bool它是否成功。

TryParse不只是try / catch内部 - 它的全部意义在于,它是没有例外,使其快速实现。事实上,它是最有可能实现的方式是,内部的Parse方法将调用TryParse然后如果返回false抛出异常。

在简单地说,使用Parse如果您确定值将是有效的;否则使用TryParse

其他提示

如果不能转换为一个整数,然后

  • int.Parse() 将把一个异常
  • int.TryParse() 将return false(但不是扔一个例外)

在的TryParse方法,可以测试的东西是否是可解析的。如果你试图解析为与无效INT第一个实例,你会同时在的TryParse,它返回一个布尔值,让你知道解析是否成功得到一个异常。

作为一个脚注,在空传递给最的TryParse方法将抛出异常。

的TryParse和异常税

解析如果从一个字符串指定的数据类型转换失败,而明确的TryParse避免抛出异常抛出异常。

的TryParse不返回值时,它返回一个状态码,以指示解析是否成功(并且不引发异常)。

有关记录,我测试两个代码:这只是尝试从字符串转换为数字,如果它失败了,分配数量为零

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

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

有关C#中,最好的选择是使用的TryParse因为尝试&捕捉替代抛出的异常

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

这是痛苦的缓慢和不希望的,但是,代码不停止,除非调试的异常结算用于中止与它

我知道它的一个很老的文章,但对解析分享一些细节VS的TryParse思想。

我有其中的DateTime需要被转换为字符串,并且如果DATEVALUE null或我们面临一个异常的String.Empty的场景。为了克服这个问题,我们已经取代了解析与和的TryParse会得到默认的日期。

旧代码:

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);

要声明另一个变量并且用作出于对的TryParse。

double.Parse( “ - ”);引发了异常,而 double.TryParse( “ - ”,解析出);解析为0 所以我想的TryParse确实更复杂的转换。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top