gpt4 book ai didi

linq - Linq 的 .Net Framework 实现是否针对可索引类型优化 Skip?

转载 作者:行者123 更新时间:2023-12-01 06:30:17 24 4
gpt4 key购买 nike

这是一个例子:

static int Main(string[] args)
{
foreach(string arg in args.Skip(77))
{
Console.WriteLine(arg);
}

return 0;
}

假设有足够的 args,这是否会在 Skip 中调用 MoveNext 77 次?还是 Skip 直接跳转到适当的索引?

最佳答案

尴尬的是,我错了。

没有。

public static IEnumerable<TSource> Skip<TSource>(this IEnumerable<TSource> source, int count) {
if (source == null) throw Error.ArgumentNull("source");
return SkipIterator<TSource>(source, count);
}

static IEnumerable<TSource> SkipIterator<TSource>(IEnumerable<TSource> source, int count) {
using (IEnumerator<TSource> e = source.GetEnumerator()) {
while (count > 0 && e.MoveNext()) count--;
if (count <= 0) {
while (e.MoveNext()) yield return e.Current;
}
}
}

乔恩双向飞碟 explains为什么它不能那样做。

关于linq - Linq 的 .Net Framework 实现是否针对可索引类型优化 Skip?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7199472/

24 4 0
文章推荐: uiview - 我如何从 SKScene 切换到 UIView
文章推荐: deployment - Windows Server 的服务总线 - 在客户端上自动部署证书
文章推荐: haskell - 是否可以在 Haskell 的库中编写自己的流融合?
文章推荐: xslt - 如何打印单个
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com