C#中强制类型转换和隐式转换有什么不同?各是在什么情况下用

 我来答
忆梦潇湘
推荐于2017-10-06 · TA获得超过584个赞
知道小有建树答主
回答量:391
采纳率:0%
帮助的人:316万
展开全部
强制类型转换是说,在编程的时候必须手动进行转换,因为这种转换可能会发生溢出、转换不成功等问题。例如,int类型的值k要转换为byte,就必须进行强制类型转换:
int k;
byte s = (byte)k; //转换可能不成功,例如当k=1024的时候数据溢出而导致转换失败!
object s;
...//一些代码;
string str = (string)s; //转换可能不成功,因为 s 可能根本就不是 string 类型的对象!

注意,强制类型转换是有可能出现异常的,因此,除非能够确定强制转换一定是成功的,否则务必用try...catch捕获异常!这也是为什么编译器要求要进行强制类型转换的原因:因为转换时可能出现异常,这些异常应当由编程人员处理,而不是编译器代为处理。

隐式转换是由编译器自动进行类型转换,因为这样是不会出现溢出、转换失败的问题的,这样会方便些。例如,从范围较小的数值到范围较大的数值、从派生类到基类的转换都是隐式类型转换:
int k = int.MaxValue;
long l = k; //这是可以通过编译的,因为永远不会溢出。
string s = "Hello C#";
object obj = s; //这也是可以的,因为 string 类型从 object 类派生。
surplushaode
2011-07-22 · TA获得超过2055个赞
知道大有可为答主
回答量:2510
采纳率:0%
帮助的人:2353万
展开全部
强制类型转换就是在你知道这种情况的转换下,会出现数据溢出,或丢失数据的时候使用的。
隐式转换就是自动的帮你转换的,比如说,int类型的转换为long类型的,这种转换不会出现溢出啊。不会出现数据丢失的时候,就可以直接的隐式转换的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
daniel0999
2011-07-22
知道答主
回答量:21
采纳率:0%
帮助的人:10.7万
展开全部
用convert
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式