gpt4 book ai didi

c# - Enumerable.ToList() 是否有惩罚

转载 作者:行者123 更新时间:2023-11-30 19:05:25 25 4
gpt4 key购买 nike

Enumerable 不允许我们像 anEnumerable[i] 那样通过索引访问元素。但是列表可以 - aList[i]。因此,与 Enumerable 相比,List 提供了额外的功能。

当我们执行 .ToList() 将可枚举转换为列表时,该操作是在恒定时间内完成的还是需要遍历可枚举才能将其转换为列表?

最佳答案

时间必须至少为 O(n),因为代码将执行如下操作:

public static IList<T> ToList(this IEnumerable<T> e)
{
List<T> list = new List<T>();
foreach (T elem in e) list.Add(elem);
return list;
}

由于您对 Add 进行了 list.Count 次调用,所以这就是您的成本。

我应该指出,在更一般的情况下可能有代码来做类似的事情

if (e is IList<T>) return (IList<T>)e;

关于c# - Enumerable.ToList() 是否有惩罚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22309494/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com