开发者社区> 问答> 正文

强制转换:(NewType)与对象作为NewType

这两个之间的实际区别是什么?

SomeClass sc = (SomeClass)SomeObject;
SomeClass sc2 = SomeObject as SomeClass;
通```  
常,它们都应该被显式转换为指定的类型吗?

展开
收起
游客ufivfoddcd53c 2020-01-03 14:15:03 898 0
1 条回答
写回答
取消 提交回答
  • 如果源类型不能转换为目标类型,则前者将引发异常。 后者将导致sc2为空引用,但也不例外。

    [编辑]

    我最初的回答当然是最明显的区别,但是正如埃里克·利珀特(Eric Lippert)指出的那样,这不是唯一的区别。 其他差异包括:

    您不能使用“ as”运算符强制转换为不接受“ null”作为值的类型

    您不能使用“ as”将事物(例如数字)转换为其他表示形式(例如,从float转换为int)。

    最后,使用“ as”与强制转换运算符,您还说“我不确定这是否会成功”。

    2020-01-03 14:15:37
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载