发布网友 发布时间:2024-10-22 21:54
共1个回答
热心网友 时间:2024-10-26 02:30
差别就在于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();