我可以编写以下内容将对象转换为整数。
Convert.ToInt32(myObject);
但我也可以写
Int.Parse(myObject.ToString());
提前致谢。
答案 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。很明显,这个任务不是一个简单的任务,应该有一个逻辑来解析字符串。