关于强制转换,代码如下:
double i = 123.456;
//int j = (int)i;
int j = Convert.ToInt32(i);
Console.WriteLine(j);
在这里用哪种方式转换出来的结果都一样,j都等于123那(int)i和Convert.ToInt32(i)这两者有什么区别,请详细说明
double i = 123.456;
//int j = (int)i;
int j = Convert.ToInt32(i);
Console.WriteLine(j);
在这里用哪种方式转换出来的结果都一样,j都等于123那(int)i和Convert.ToInt32(i)这两者有什么区别,请详细说明
int 和convert.toint16的区别
convert.toint32()是实现类型转化
对于string来说,没区别...
int result = 0;result = Convert.ToInt32(source);result = Int32.Parse(source);Int32.TryParse(source, out result);Convert.ToInt32(source)在source为null的情况下不会抛出异常而是简单的返回0给调用方法用上面的 三种方法转换,不推荐用(int)方式的
如下的代码就行不通了:
string text = "1412";
int id = (int)text; Convert.ToInt32是内容转换
如下代码中 text 实际上储存的是一个数值,我们希望把这个数值提取出来并以 int 的形式使用,那么就需要进行内容转换了,即
string text = "1412";
int id = Convert.ToInt32(text);
此外,Convert.ToInt32 有很多重载版本,例如 Convert.ToInt32(double value),当用这个版本来把一个double转换成 int 时,ToInt32 会检查被转换的数值是否能够用 int 表示,即是否会发生“越界”,如果是就会抛出OverflowException异常,否则就会转换,但使用 (int) 进行强制转换,如果被转换的数值大于 Int32.MaxValue,那么你将得到一个错误的结果,例如下面的代码:
double d = Int32.MaxValue + 0.1412;
int i = (int)d; 无论你进行什么数值转换,精度问题都是必须考虑的。