Parse , Covert.To,TryParse类型转换

来源:互联网 发布:excel一半的数据没了 编辑:程序博客网 时间:2024/06/07 09:01

parse Covert.To 都能把有效的数据转化成相应的格式,但在实际情况中什么时候用parse 和什么时候用Convert.To 这个一直都很模糊。

下面是 Int32.Parse(string) Convert.ToInt32 反射出来的代码

Int32.Parse(string)

public static int Parse(string s)
{
  
return int.Parse(s, NumberStyles.Integer, null);
}


public static int Parse(string s, NumberStyles style, IFormatProvider provider)
{
  NumberFormatInfo info1 
= NumberFormatInfo.GetInstance(provider);
  NumberFormatInfo.ValidateParseStyle(style);
  
return Number.ParseInt32(s, style, info1);
}


Convert.ToInt32

public static int ToInt32(string value)
{
  
if (value == null)
  
{
    
return 0;
  }

  
return int.Parse(value);
}


从代码中能看出的一个最明显的差别:

1.       Convert.ToInt32 () 方法是调用了 int.Parse()方法

2.        Convert.ToInt32 string null的时候不会抛 System.ArgumentNullException 类型的异常

从安全上面来说, Convert.ToInt32 int.Parse上面更安全点,但是从执行的速度上面,parse 要比Convert.ToInt32 要快一些。但是在出现System.FormateExceptionSystem.OverflowException 异常的时候,Convert.ToInt32 int.Parse 都没有什么方法避免,出现异常之后, 速度上面一样会降下来。我们这个时候需要捕获异常,然后在处理。

还好.net 2.0之后, 出来了一个TryParse()的方法,

public static bool TryParse(string s, out int result);

如果转化成功, 返回实际的结果,如果类型转化失败, 返回0;这样在类型的转换过程中,就不会出现异常,这个比Parse和Convert都要好,而且在执行的速度上面要比Convert要快。所以我们在实际的使用中最好是用TryParse 方法

原创粉丝点击