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做更复杂的转换。