Convert和Parse有什么区别?

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

Convert.ToInt32(myObject); 

但我也可以写

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

提前致谢。

  • 有什么区别吗?

是的, Int32.parse(myObject.ToString()); 绕道而行,这通常会起作用,但这是不必要的,它可能会失败或给出不同的结果。

  • 我应该使用哪一个?

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

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

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

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

等等

这是Convert.ToInt32方法源的样子

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

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

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

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

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

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