cast和as的区别? [重复]

问题描述 投票:0回答:4

可能重复:
c# 中以下类型转换有什么区别?

在 C# 中,转换对象或使用

as
关键字有区别吗?希望这段代码能够说明我的意思...

String text = "Hello hello";
Object obj = text; 

String originalCast = ((String)obj).ToUpper();
String originalAs = (obj as String).ToUpper();
c# casting
4个回答
106
投票

as
永远不会抛出
InvalidCastException
。相反,如果转换失败,它会返回 null(如果示例中的 NullReferenceException
 不是 
obj
,则会给出
string
)。


23
投票

除了已经提到的

InvalidCastException
...

如果目标类型是值类型,

as
将不起作用(除非它可以为空):

obj as int // compile time error.

9
投票

据我所知!

如果“cast”失败,使用“as”将返回 null,如果转换失败,则会抛出异常。


5
投票

如果 obj 不是字符串,使用 'as' 不会引发异常。相反,它会返回 null。在您的情况下,由于您立即引用此空值,因此仍然会引发异常。

© www.soinside.com 2019 - 2024. All rights reserved.