Convert和Parse有什么区别?

时间:2010-08-15 09:12:57

标签: c# .net object type-conversion

我可以编写以下内容将对象转换为整数。

Convert.ToInt32(myObject);

但我也可以写

Int.Parse(myObject.ToString());
  • 有什么不同吗?
  • 我应该使用哪一个?

提前致谢。

4 个答案:

答案 0 :(得分:4)

  
      
  • 有什么不同吗?
  •   

是的,Int32.parse(myObject.ToString());绕过字符串,这通常会有效,但这是不必要的,可能会失败或给出不同的结果。

  
      
  • 我应该使用哪一个?
  •   

一般来说,Convert.ToInt32(myObject);

但这取决于您要转换的数据类型。

如果myObject = '1';,您想要1还是49

如果myObject = false;,您想要0还是例外?

答案 1 :(得分:1)

这个Convert.ToInt32方法源的方式如何

public static int ToInt32(object value) {
    return value == null? 0: ((IConvertible)value).ToInt32(null); 
}

只要您的对象实现IConvertible接口,就应该调用此方法。

答案 2 :(得分:1)

根据documentation,它取决于对象以及它是否实现IConvertible接口。使这些方法不同的原因有很多。值得注意的是,如果字符串表示不表示相应的整数值(例如,“{Value = 123}”)或对象不是IConvertible。我会选择使用Convert.ToInt32(),因为转换是由类型定义的,而不依赖于某些可能在将来发生变化的观察属性。

答案 3 :(得分:0)

据我所知,Convert和Parse在很多方面都有所不同:

转换意味着将对象从其原始类型转换为另一种类型(如果可能)。但是两个对象在它们自己的上下文中都是相同的,例如“32”是字符串版本32(作为整数)。像Visual Basic这样的语言可以隐式发生这种转换。

解析意味着接受输入(通常以字符串的形式)并将其转换为可能完全不同的对象。以日期为例:我们可以解析“2010年7月20日”这是一个日期字符串。这意味着我们必须将提供的字符串转换为日期对象,其日期为20,月份为7,年份为2010。很明显,这个任务不是一个简单的任务,应该有一个逻辑来解析字符串。