我很好奇,与使用Convert.ToInt32()
相比,使用强制转换来表示int
有什么不同。使用它会带来性能上的提升吗?
另外,每种情况都应该用于哪些情况?目前我更倾向于使用Convert
,但我没有理由选择任何一种方式。在我的脑海中,我看到他们都在完成同样的目标。
发布于 2010-07-03 03:56:16
当它确实是一种int
类型时,进行强制转换;当它不是int
类型,但您希望它成为一种类型时,则进行转换。
例如,当您知道o是一个整数时使用int i = (int)o;
int i = Convert.ToInt32("123")
因为"123“不是整数,所以它是整数的字符串表示。
发布于 2015-04-15 20:18:41
还有一个不同之处。"Convert“总是溢出检查,而"cast”可能是,这取决于您的设置和使用的"checked“或"unchecked”关键字。
更明确地说。考虑下面的代码:
int source = 260;
byte destination = (byte)source;
则destination将为4而不会出现警告。
但是:
int source = 260;
byte destination = Convert.ToByte(source);
会给你一个例外。
发布于 2010-07-03 03:55:03
并非所有类型都支持像这样的转换
int i = 0;
decimal d = (decimal)i;
因为它是实现explicit operator所必需的。但.NET也提供了IConvertible interface,因此实现该接口的任何类型都可以转换为大多数框架内置类型。最后,Convert类帮助操作类型实现了IConvertible接口。
https://stackoverflow.com/questions/3168704
复制相似问题