(int)、Convert.ToInt32()与int.Parse()的区别

 1、(int)是类型转换,能够使用(int)进行强类型转换的只能是数值类型,如long、short、double等,这种转换时需要考虑精度问题。

如下的代码就行不通了:
string text = "1234";
int id = (int)text;
2、Convert.ToInt32是内容转换 如下代码中,text 实际上储存的是一个数值,我们希望把这个数值提取出来并以 int 的形式使用,那么就需要进行内容转换了,
即 string text = "1234";
int id = Convert.ToInt32(text);
此外,Convert.ToInt32 有很多重载版本,例如 Convert.ToInt32(double value),当用这个版本来把一个double转换成 int 时,ToInt32 会检查被转换的数值是否能够用 int 表示,即是否会发生“越界”,如果是就会抛出OverflowException异常,否则就会转换,但使用 (int) 进行强制转换,如果被转换的数值大于Int32.MaxValue,那么你将得到一个错误的结果,例如下面的代码:
double d = Int32.MaxValue + 1.1412; int i = (int)d;
无论你进行什么数值转换,精度问题都是必须考虑的。
3、int.parse和Convert.ToInt32没太大差别,最大的不同是它们对null值的处理方法。
Convert.ToInt32(null)会返回0而不会产生任何异常,但int.Parse(null)则会产生异常。
原文地址:https://www.cnblogs.com/powerzhang/p/3301405.html