首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >何时使用强制转换或转换

何时使用强制转换或转换
EN

Stack Overflow用户
提问于 2010-07-03 03:48:33
回答 8查看 39.5K关注 0票数 80

我很好奇,与使用Convert.ToInt32()相比,使用强制转换来表示int有什么不同。使用它会带来性能上的提升吗?

另外,每种情况都应该用于哪些情况?目前我更倾向于使用Convert,但我没有理由选择任何一种方式。在我的脑海中,我看到他们都在完成同样的目标。

EN

回答 8

Stack Overflow用户

发布于 2010-07-03 03:56:16

当它确实是一种int类型时,进行强制转换;当它不是int类型,但您希望它成为一种类型时,则进行转换。

例如,当您知道o是一个整数时使用int i = (int)o;

int i = Convert.ToInt32("123")因为"123“不是整数,所以它是整数的字符串表示。

票数 78
EN

Stack Overflow用户

发布于 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);

会给你一个例外。

票数 12
EN

Stack Overflow用户

发布于 2010-07-03 03:55:03

并非所有类型都支持像这样的转换

int i = 0;
decimal d = (decimal)i;

因为它是实现explicit operator所必需的。但.NET也提供了IConvertible interface,因此实现该接口的任何类型都可以转换为大多数框架内置类型。最后,Convert类帮助操作类型实现了IConvertible接口。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3168704

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档