当前位置: 首页 > news >正文

网站建设方投资成本html品牌网页设计论文

网站建设方投资成本,html品牌网页设计论文,wordpress采集插件推荐,电子邮箱怎么申请概要 本文主要分析Linq中Take带Range参数的重载方法的源码。 源码分析 基于Range参数的Take重载方法#xff0c;主要分成两部分实现#xff0c;一部分是Range中的开始和结束索引都是正数的情况例如取第一个到第三个元素的情况#xff1b;另一部分是开始或结束索引中有倒数…概要 本文主要分析Linq中Take带Range参数的重载方法的源码。 源码分析 基于Range参数的Take重载方法主要分成两部分实现一部分是Range中的开始和结束索引都是正数的情况例如取第一个到第三个元素的情况另一部分是开始或结束索引中有倒数的情况例如取倒数第三个到倒数第一个的情况。 本文着重分析Range中的正数情况。 public static IEnumerableTSource TakeTSource(this IEnumerableTSource source, Range range) {if (source null){ ThrowHelper.ThrowArgumentNullException(ExceptionArgument.source);}Index start range.Start;Index end range.End;bool isStartIndexFromEnd start.IsFromEnd;bool isEndIndexFromEnd end.IsFromEnd;int startIndex start.Value;int endIndex end.Value;Debug.Assert(startIndex 0);Debug.Assert(endIndex 0);if (isStartIndexFromEnd){if (startIndex 0 || (isEndIndexFromEnd endIndex startIndex)){return EmptyTSource();}}else if (!isEndIndexFromEnd){return startIndex endIndex? EmptyTSource(): TakeRangeIterator(source, startIndex, endIndex);}return TakeRangeFromEndIterator(source, isStartIndexFromEnd, startIndex, isEndIndexFromEnd, endIndex); } 检查源序列是否为空如果为空直接抛出异常获取Range的启始和结束的索引值以及索引值是正数还是倒数的bool值如果开始索引值是倒数以下几种情况返回空序列 a开始索引是^0 倒数第0个显然不合理 bRange形如 ^1… ^3的情况假设有10个元素 ^1… ^3相当于取从第10个到第7个显然是不合理。应该是从第7个到第10个 cRange形如 ^2 … ^2因为开始和结束索引相同中间没有间隔元素该种情况也不合理在Range中的开始和结束索引都不是倒数的情况下如果开始索引大于结束索引即Range形如2…1返回空序列否则调用TakeRangeIterator方法完成具体取值操作对于合理的Range倒数情况例如形如 ^3… ^1 3… ^1 或 ^3 … 10 这些情况执行最后的TakeRangeFromEndIterator方法。 TakeRangeIterator方法 TakeRangeIterator方法用于处理Range中的开始和结束索引都是正数的情况。该方法位于Take.SizeOpt文件中。通过yield return/break的方式管理迭代过程。 private static IEnumerableTSource TakeRangeIteratorTSource(IEnumerableTSource source, int startIndex, int endIndex) {Debug.Assert(source ! null);Debug.Assert(startIndex 0 startIndex endIndex);using IEnumeratorTSource e source.GetEnumerator();int index 0;while (index startIndex e.MoveNext()){index;}if (index startIndex){yield break;}while (index endIndex e.MoveNext()){yield return e.Current;index;} }创建迭代器e采用using方式在函数执行完成后自动释放内存空间如果Range中的索引数据和source序列中的元素个数不匹配例如指定从第三个元素开始取但是数列里面只有两个元素返回yield break关闭状态机注意此种情况并不会抛出越界异常按照索引范围通过迭代器e取值创建状态机通过yield return方式返回。 TakeRangeFromEndIterator方法 TakeRangeIterator方法用于处理Range中的开始和结束索引存在倒数的情况。该方法位于Take.cs文件中。通过yield return/break的方式管理迭代过程。 该方法篇幅较长将在C# Linq源码分析之Take 三中详细分析其源码。
http://www.pierceye.com/news/65002/

相关文章:

  • 三亚市建设局官方网站小程序推广运营公司
  • 邯郸做wap网站的公司官方商城网站建设
  • iis 多网站江苏建设工程交易中心网站
  • 专门卖电子产品的网站西安seo网站排名优化公司
  • 阿里巴巴做网站多少钱奇月网络官方网站
  • 建立网站需要多少钱 纠正错误湖南岚鸿0基础网站建设教程视频
  • 鞍山网站建设联系方式大学新校区建设网站
  • 创建网站要钱吗wordpress 作者 链接
  • 登陆建设银行官方网站设计类专业有哪些学校
  • 做网站的公司好坑啊开源oa系统
  • 秦皇岛建设网站公司哪家好wordpress 集成安装包
  • 网站建设 客户拜访网站开发合同范本下载
  • 网站用社交图标做链接侵权吗宁波网站公司哪里好
  • 如何提高网站首页权重wordpress示例页面删除
  • 旅游网站模板 手机模板网站的建设
  • 网站建设管理 优帮云微网站建设找哪家
  • 北京互联网公司网站建设金融投资网站开发
  • 帝国cms 企业网站哈尔滨市工程建设监理有限公司
  • 站长必备网站重庆云阳网站建设公司
  • 校园网站建设整改建议网站备案需要多久时间
  • 华夏网站建设网站都是在哪里制作的
  • 自己的服务器如何给网站备案翻译api wordpress
  • wordpress dooplay中山网站推广优化
  • 烟台营销型网站建设湖南网站定制
  • 银川做网站哪家公司好抖音开放平台注册
  • 济南高新区 网站制作售房网站开发 .net
  • 学校类网站建设的分析wordpress 全站404
  • 哪里有做网站的公司合肥万户网络科技有限公司
  • 第一页网站SEO用织梦建设网站的步骤
  • 智慧团建网站官网入口登录贵州省高层建筑信息平台