首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

显式转换与“as”解决方案

2012-12-17 
显式转换与“as”c#中显式转换的两种方法“(T)obj”和“obj as T”一样吗?如果不一样有什么不同,性能孰优孰劣?[

显式转换与“as”
c#中显式转换的两种方法“(T)obj”和“obj as T”一样吗?如果不一样有什么不同,性能孰优孰劣?
[最优解释]
(T)obj:强制转换,如果不能转换会抛出异常,适用所有类型
obj as T:如果不能转换,则obj得到null值,不会抛出异常,只适用引用类型,对Int32等值类型不能用。
[其他解释]

引用:
引用:(T)obj
如果不能转换会报错
as
如果不能转换不报错,返回null
不敢苟同
当T为值类型时,as会报错

as是用于在兼容的引用类型之间进行强制转换
[其他解释]
如果不用as,那么一旦你的转型不合适,就会报不能转型的错。如果使用as,如果你进行不合适的转型,那么结果就会变成NULL,不会报错——但是这样一来,你的日志文件里变会记录下空指针异常,而非转型异常。

一般情况下,如果我不确定传进来的东西到底是什么,而我只是试探性的去转,如果转成功了就怎样怎样时,我会用as,然后判断一下是否为null就可以;如果我确定传进来的一定是某类型,如果不是那肯定是上层代码出错了,我会用显示转型。
[其他解释]
as 就是包装了一下的强制转换
[其他解释]
相当于加了一个try catch
[其他解释]
(T)obj
如果不能转换会报错
as
如果不能转换不报错,返回null
[其他解释]
引用:
(T)obj
如果不能转换会报错
as
如果不能转换不报错,返回null

不敢苟同
当T为值类型时,as会报错

热点排行