ASP.NET错误处理:Runtime Error
转换方法 主要方法: OfType: 将IEnumerable转换为IEnumerable, 同时丢弃那些非目标类型的错误元素 Cast: 将IEnumerable转换位IEnumerable, 如果源序列包含有非转换目标类型的元素将会抛出异常 ToArray: 将IEnumerable转换为T[] ToList: 将IEnumerable转换为List ToDictionary: 将IEnumerable转换为Dictionary</TKEY,> ToLookup: 将IEnumerable转换为ILookup</TKEY,> AsEnumerable: 向下转换为IEnumerable AsQueryable: 转换为IQueryable OfType与Cast OfType和Cast接受一个非泛型的IEnumerable集合并最终返回一个泛型IEnumerable序列, 因而可以做进一步查询操作: 1: ArrayList classicList = new ArrayList(); 2:
3: lassicList.AddRange(new int[] { 3, 4,5 } ); 4:
5: Enumerable<int> sequence1 =classicList.Cast<int>(); OfType与Cast的不同之处在于其处理输入序列中的不兼容元素上面, Cast抛出异常, OfType则是忽略这些不兼容的元素, 继续我们之前的例子: 1: DateTime offender = DateTime.Now;
2:
3: lassicList.Add (offender);
4:
5: Enumerable<int> sequence2 = classicList 6:
7: OfType<int>(); // 忽略offender 8:
9: Enumerable<int> sequence3 = classicList 10:
11: Cast<int>(); // 抛出异常 元素类型的兼容性实际上就是使用C#的is操作符, 我们可以查看一下OfType的内部实现: 1: public static IEnumerable OfType 2:
3: (IEnumerable source)
4:
5: {
6:
7: foreach (object element in source) 8:
9: if (element is TSource) 10:
11: yield return (TSource)element; 12:
13: }
Cast也是一样的实现, 唯一的不同就是它省掉了兼容性检查: 1: public static IEnumerable Cast 2:
3: (IEnumerable source)
4:
5: {
6:
7: foreach (object element in source) 8:
9: yield return(TSource)element; 10:
11: }
其结果是你不能使用Cast将元素从一个值类型转换为另外一个值类型(相反, 你可以使用一个select操作). 换句话说, Cast并不像C#当中的cast操作符那么灵活, cast允许类似如下的静态类型之间的 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |