题
是什么之间的差异分析()和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不返回值时,它返回一个状态码,以指示解析是否成功(并且不引发异常)。
有关记录,我测试两个代码:这只是尝试从字符串转换为数字,如果它失败了,分配数量为零
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确实更复杂的转换。