C# double.TryParse?

double.TryParse();和try{double.Parse();}catch{}的不同?以下两种写法会有哪些差别?用try{double.Parse();}c... double.TryParse();和try{double.Parse();}catch{} 的不同?

以下两种写法会有哪些差别?
用try{double.Parse();}catch{}比double.TryParse();资源消耗多么?效率会低很多么?
我这么问主要是.NET Compact Framwork里double没有TryParse();方法。我想统一写成try{double.Parse();}catch{}就两边都可以用了。
谢谢。

double sPEED;
if (double.TryParse(str, out sPEED)) { mytype.SPEED = sPEED; }
else { return; }

try { mytype.SPEED = double.Parse(str); }
catch { return; }
展开
 我来答
sololive
2009-11-27 · TA获得超过394个赞
知道小有建树答主
回答量:353
采纳率:0%
帮助的人:111万
展开全部
差别就在于Parse和TryParse之中转换不匹配时,是否抛出错误. 他们之中核心的转换方法是一样的,区别大概如下:
double Parse(string value){
try{
if(转换失败){
throw new FormatException(...);
}
}
catch(FormatException){
//其他判断...
//返回其他值,或者throw;
}
return Nan;
}
bool TryParse(string value,out double result){
if(转换失败){
return false;
}
return true;
}
使用try{double.Parse(..);}catch(FormatException){...}来捕捉错误,肯定要比TryParse(...)更消耗资源,因为Parse中声明使用了try{}catch{}以及抛出错误时实例化FormatException。TryParse中没有.
Compact Framwork 我就不知道了,但是 .Net Framwork 1.1及以前的版本使用try{}catch{}能很明显的感觉到消耗资源.2.0以后的就没什么感觉了.
差别就在这里了,当然,没有TryParse(...);使用try{double.Parse(...);}catch(FormatException){...}应该是比较好的办法了.
另外还要注意一个,在Parse之前,不妨对string value进行是否为null的判断以提高效率和安全性,因为TryParse中,string 为null,将直接返回0.0。而Parse中则throw ArgumentNullException();
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式