快速业务通道

ASP.NET错误处理:Runtime Error

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-03-14

转换方法

主要方法:

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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号