【习惯】优先考虑is或as运算符,尽量少用强制类型转换
情景:比如所使用的框架在方法签名里把参数类型写成了object,那么用到时可能要先将参数类型转换。
用 as运算符 或者 强制类型转换(cast)来绕过编译器的类型检查 两种办法进行类型转换之前,可以先通过as运算符来判断操作是否合理。
采用as运算符比盲目的使用强制类型转换更安全,而且在运行时也更有效率。
语法:
对于 object o = Factory.GetObject();
1. Mytype t = o as MyType; //使用 as 转换
2. Mytype t;
t = (MyType) o; //使用类型强制转换
如果o 是null,as将无法转换, 而强制类型转换null结果也是null,不符合,所以两种转换都要判断是否为null。但是强制转换还要避免转换不了抛出异常,还要使用try catch,所以强制转换的开销和代码量都要比as大。
as和强制转换最大的区别在于如何对待由用户所定义的转换逻辑。