这两个演员之间究竟有什么区别?SomeClass sc = (SomeClass)SomeObject;SomeClass sc2 = SomeObject as SomeClass;通常,它们都应该显式转换为指定的类型?
3 回答
芜湖不芜
TA贡献1796条经验 获得超7个赞
如果源类型无法转换为目标类型,前者将抛出异常。后者将导致sc2为空引用,但没有例外。
[编辑]
我最初的答案肯定是最显着的差异,但正如Eric Lippert 指出的那样,它不是唯一的。其他差异包括:
您不能使用'as'运算符强制转换为不接受'null'作为值的类型
您不能使用'as' 将事物(例如数字)转换为不同的表示形式(例如,float到int)。
最后,使用'as'与演员操作员,你也说“我不确定这是否会成功。”
慕标琳琳
TA贡献1830条经验 获得超9个赞
另请注意,您只能将as关键字与引用类型或可空类型一起使用
即:
double d = 5.34;
int i = d as int;
不会编译
double d = 5.34;
int i = (int)d;
将编译。
- 3 回答
- 0 关注
- 619 浏览
添加回答
举报
0/150
提交
取消