Convert.ToInt32和(int)有什么区别?
以下代码会引发编译时错误,例如
无法将类型“字符串”转换为“整数”
string name = Session["name1"].ToString();int i = (int)name;
而下面的代码可以编译并成功执行:
string name = Session["name1"].ToString();int i = Convert.ToInt32(name);
我想知道:
为什么第一个代码会生成编译时错误?
这两个代码段之间有什么区别?
回答:
(int)foo
只是转换为Int32
(int
在C#中)类型。这是建立在CLR和要求foo
是数字变量(例如float
,long
等),在这个意义上,它是非常类似于C的投
Convert.ToInt32
设计为通用转换函数。它比铸造更重要。也就是说,它可以从 任何 原始类型转换为a int
(最著名的是解析a
string
)。您可以在MSDN上查看此方法的重载的完整列表。
正如Stefan Steiger 在评论中提到的那样:
另外,请注意,在数值级别上,
(int) foo
截断foo
(ifoo =
Math.Floor(foo)),而
Convert.ToInt32(foo)
使用一半至偶数舍入(将x.5舍入为最接近的EVEN整数,即
ifoo
= Math.Round(foo))。因此,结果不仅在实现方面,而且在数值上 相同。
以上是 Convert.ToInt32和(int)有什么区别? 的全部内容, 来源链接: utcz.com/qa/413659.html