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; } 展开
以下两种写法会有哪些差别?
用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; } 展开
展开全部
差别就在于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();
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();
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询