对于类型转换通常有两种选择:使用as操作符;强制转换。另外还有一种比较保险的做法:先用is来做一个转换测试,然后在使用as或强制转换。
as和is操作符都不执行任何用户自定义的转换,而且只能用于引用类型。对于值类型只能使用强制转换。
编译器在产生代码是依据变量编译时的类型,对其运行时的类型一无所知,当进行类型转换时,编译器查看其相容性、有没有用户自定义转换 ,若都不成立则编译器产生代码来检查该变量运行时的类型并于目标变量进行比较,如果相等或兼容,则转换成功,否则失败。此处,用户自定义转换操作符只作用于对象的编译时类型,而非运行时类型上
在foreach中使用的是强制类型转换,因为每次current对象都是object类型。
一般情况下不要使用强制类型转换,他们可能带来意想不到的负面效应。
本文探讨了类型转换中的as操作符、is测试及强制转换,并强调了它们在不同场景下的适用性和潜在风险,尤其指出了在foreach循环中使用强制类型转换的情况。
128

被折叠的 条评论
为什么被折叠?



