首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Enumerable.Range实现

Enumerable.Range实现
EN

Stack Overflow用户
提问于 2009-10-05 13:39:07
回答 3查看 2.5K关注 0票数 1

Enumerable.Range在.Net中的精确实现是什么;更好的.Net 4是什么?这是一个屈服的循环吗?自定义实现(IEnumerable、IEnumerator)或?

EN

回答 3

Stack Overflow用户

发布于 2009-10-05 13:45:35

您可以使用反射器查看自己的实现。它检查参数并在调用时抛出异常,因此Range方法本身不是迭代器方法。它调用另一个方法,即迭代器方法。由于许可证限制,发布确切的代码是不可以的。

票数 1
EN

Stack Overflow用户

发布于 2010-05-28 14:59:15

反射面输出(以及CraigTP的答案及其评论中提到的论点检查和额外的内部化程度)有细微但显著的差异:

代码语言:javascript
复制
public static IEnumerable<int> Range(int start, int count) {
    for(int current = 0; current < count; ++current) {
        yield return start + current;
    }
}

也就是说,它们不是另一个局部变量,而是对每一个产量加一个额外的变量。

票数 1
EN

Stack Overflow用户

发布于 2019-05-02 16:13:29

这是一个屈服的循环吗?自定义实现(IEnumerable,IEnumerator)?

两者:-)

.NET 4

2014年2月,微软将.NET源代码浏览器放在网上。因此,你的问题现在可以用一个正式的来源来回答:

Enumerable.Range执行错误检查,然后调用私有方法RangeIterator,该方法使用已生成的-循环

许可证仍然不允许在这里发布代码,但是您可以自己查看这个链接:

.NET核

.NET核心是在更宽松的麻省理工学院许可下授权的。我不是律师,所以我不知道这是否意味着我可以将其复制并粘贴到StackOverflow中,但以下是指向他们的Enumerable.Range实现的直接链接,该实现使用(自定义RangeIterator对象)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1520136

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档