gpt4 book ai didi

c# - IEnumerable Count() 和 Length 之间的区别

转载 作者:IT王子 更新时间:2023-10-29 03:46:06 33 4
gpt4 key购买 nike

IEnumerable Count()Length 之间的主要区别是什么?

最佳答案

通过在 IEnumerable<T> 上调用 Count我假设您指的是扩展方法 CountSystem.Linq.Enumerable . Length不是 IEnumerable<T> 上的方法而是 .Net 中数组类型的属性,例如 int[] .

区别在于性能。 Length属性保证是 O(1) 操作。 Count 的复杂性扩展方法因对象的运行时类型而异。它将尝试转换为支持 O(1) 长度查找的多种类型,如 ICollection<T>通过 Count属性(property)。如果没有可用的,那么它将枚举所有项目并计算它们的复杂度为 O(N)。

例如

int[] list = CreateSomeList();
Console.WriteLine(list.Length); // O(1)
IEnumerable<int> e1 = list;
Console.WriteLine(e1.Count()); // O(1)
IEnumerable<int> e2 = list.Where(x => x <> 42);
Console.WriteLine(e2.Count()); // O(N)

e2作为不支持 O(1) 计数的 C# 迭代器实现,因此方法 Count必须枚举整个集合以确定它有多长。

关于c# - IEnumerable Count() 和 Length 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2521592/

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