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 |
- 这里有许多问题。这些天没人读过这些文件吗?
- 在这个网站上搜索[c#] typecast时,第一次点击显示:stackoverflow.com/questions/3724051/…这反过来又被作为其他问题的重复而关闭。投票结束
如果无效,首先将抛出castexception。第二个只会导致obj=null。
- 第二个结果是真的?:)
- 不,第二个将生成正确类型或空的对象。你想到的是is操作符,arcturus。
- 不,第二个将导致没有为obj变量分配任何值,因为强制转换失败。因此,obj将为空
- 我认识马特,但埃多克斯1〔1〕所以埃多克斯1〔2〕就是埃多克斯1〔3〕。一个=签名太多:)
- 我认为Danijels意味着op中的第二个代码示例将意味着obj将等于null,或者obj==null:。
- 没错,Matt。我看不出这里的混乱。看着第一句话结尾的笑脸,我只能假设那家伙想变可爱…
- 对的。。别想了,只是想搞笑而已。
以及丹尼尔斯的答案
第一个可以用于任何类型。
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。这只能用于引用类型。您需要首先对值类型进行装箱。