条款3:操作符is或as优于强制转换

本文探讨了类型转换中的as操作符、is测试及强制转换,并强调了它们在不同场景下的适用性和潜在风险,尤其指出了在foreach循环中使用强制类型转换的情况。

     对于类型转换通常有两种选择:使用as操作符;强制转换。另外还有一种比较保险的做法:先用is来做一个转换测试,然后在使用as或强制转换。

     as和is操作符都不执行任何用户自定义的转换,而且只能用于引用类型。对于值类型只能使用强制转换。

     编译器在产生代码是依据变量编译时的类型,对其运行时的类型一无所知,当进行类型转换时,编译器查看其相容性、有没有用户自定义转换 ,若都不成立则编译器产生代码来检查该变量运行时的类型并于目标变量进行比较,如果相等或兼容,则转换成功,否则失败。此处,用户自定义转换操作符只作用于对象的编译时类型,而非运行时类型上

在foreach中使用的是强制类型转换,因为每次current对象都是object类型。

一般情况下不要使用强制类型转换,他们可能带来意想不到的负面效应。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值