C#:(Type)Something vs Something为Type之间是否有任何区别


C#: Is there any Difference between (Type)Something vs Something as Type

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Direct casting vs 'as' operator?
Casting vs. using the as keyword in the CLR

在C中,有什么区别?

1
var obj = (Array)Something

VS

1
var obj = Something as Array


如果无效,首先将抛出castexception。第二个只会导致obj=null。


以及丹尼尔斯的答案

第一个可以用于任何类型。

as运算符只能用于引用类型。


1
var obj = (Array)Something

如果Something不是派生自System.Array或没有System.Array的转换运算符,则将抛出一个invalidcastexception。这可以用于值类型和引用类型。

1
var obj = Something as Array

如果Something不是来源于System.Array或没有System.Array的转换运算符,则返回null(obj将是null。这只能用于引用类型。您需要首先对值类型进行装箱。