Effective C# 学习笔记(三)在类型转换上多使用 as 和 is
2011-07-02 23:12 小郝(Kaibo Hao) 阅读(510) 评论(0) 编辑 收藏 举报好处:使用 as 和is 在运行时判断类型转换是否成功,若是转换失败不会产生新的对象
使用 as 转换对象类型,若是失败会返回 null ,这时只需判断是否为null就可判断是否转换成功,否则转换就是两步判断 1. 判断转换是否成功 2. 判断是否为null
//使用 as
object o = Factory.GetObject();
// Version one:
MyType t = o as MyType;
if (t != null)
{
// work with t, it's a MyType.
}
else
{
// report the failure.
}
//强制转换
object o = Factory.GetObject();
// Version two:
try
{
MyType t;
t = (MyType)o;
// work with T, it's a MyType.
}
catch (InvalidCastException)
{
// report the conversion failure.
}
限制:as不能用于原始类型,如: int double float and so on
对于 foreach 这种 集合(所有实现了IEnumerable接口的类型)遍历操作中的类型转换的折中方案是使用 Cast<T>方法,其中T可为所有类型
IEnumerable collection = new List<int>()
{1,2,3,4,5,6,7,8,9,10};
var small = from int item in collection
where item < 5
select item;
var small2 = collection.Cast<int>().Where(item => item < 5).
Select(n => n);
出处:http://www.cnblogs.com/haokaibo/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。