转换:(NewType)与Object作为NewType

这两个演员之间究竟有什么区别?


SomeClass sc = (SomeClass)SomeObject;

SomeClass sc2 = SomeObject as SomeClass;

通常,它们都应该显式转换为指定的类型?


当年话下
浏览 605回答 3
3回答

芜湖不芜

如果源类型无法转换为目标类型,前者将抛出异常。后者将导致sc2为空引用,但没有例外。[编辑]我最初的答案肯定是最显着的差异,但正如Eric Lippert 指出的那样,它不是唯一的。其他差异包括:您不能使用'as'运算符强制转换为不接受'null'作为值的类型您不能使用'as' 将事物(例如数字)转换为不同的表示形式(例如,float到int)。最后,使用'as'与演员操作员,你也说“我不确定这是否会成功。”

慕标琳琳

另请注意,您只能将as关键字与引用类型或可空类型一起使用即:double d = 5.34;int i = d as int;不会编译double d = 5.34;int i = (int)d;将编译。
打开App,查看更多内容
随时随地看视频慕课网APP