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

来源:互联网 发布:龙腾世纪3 知乎 编辑:程序博客网 时间:2024/05/01 08:25

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

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

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

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

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