在C#中下面这两个类型转换有什么区别?
SomeClass sc = (SomeClass)SomeObject; SomeClass sc2 = SomeObject as SomeClass;
通常,它们都应该被显式转换为指定的类型吗?
解决方案
最明显的区别:
如果源类型不能转换为目标类型,则前者将引发异常。
后者将导致sc2为空引用,但没有异常。
(如果强制转换尝试失败,则括号强制转换将引发异常。如果转换尝试失败,则" as"转换将返回null。)
其他区别:
- 我们不能使用'as'运算符强制转换为不接受'null'作为值的类型
- 我们不能使用'as'来转换事物,例如将数字转换为不同的表示形式(例如,将float转换为int)。
最后,使用" as"与强制转换运算符,有"我不确定是否会成功"的意思。
日期:2020-03-24 11:01:24 来源:oir作者:oir