可能重复:
c# 中以下类型转换有什么区别?
在 C# 中,转换对象或使用
as
关键字有区别吗?希望这段代码能够说明我的意思...
String text = "Hello hello";
Object obj = text;
String originalCast = ((String)obj).ToUpper();
String originalAs = (obj as String).ToUpper();
除了已经提到的
InvalidCastException
...
如果目标类型是值类型,as
将不起作用(除非它可以为空):
obj as int // compile time error.
据我所知!
如果“cast”失败,使用“as”将返回 null,如果转换失败,则会抛出异常。
如果 obj 不是字符串,使用 'as' 不会引发异常。相反,它会返回 null。在您的情况下,由于您立即引用此空值,因此仍然会引发异常。