可能重复:
What is the difference between the following casts in c#?
在C#中,投射对象或使用as
关键字有区别吗?希望这段代码能说明我的意思......
String text = "Hello hello";
Object obj = text;
String originalCast = ((String)obj).ToUpper();
String originalAs = (obj as String).ToUpper();
由于
:)
答案 0 :(得分:78)
as
永远不会抛出InvalidCastException
。相反,如果转换失败,它将返回null(如果示例中的obj
不是string
,则会为您提供NullReferenceException
。
答案 1 :(得分:19)
除已提及的InvalidCastException
之外......
as
将不起作用:
obj as int // compile time error.
答案 2 :(得分:8)
据我所知!
如果'cast'失败,那么使用'as'将返回null,如果转换失败,则cast会抛出异常。
答案 3 :(得分:5)
如果obj不是String,则使用'as'不会抛出异常。相反,它将返回null。在您的情况下,由于您立即引用此空值,因此仍会抛出异常。