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。 很明显,这个任务不是一个简单的任务,应该有一个逻辑来解析字符串。