gpt4 book ai didi

c# - Count() (linq 扩展名)和 List.Count 之间有区别吗

转载 作者:太空狗 更新时间:2023-10-29 20:01:52 27 4
gpt4 key购买 nike

List<string> list = new List<string>() {"a", "b", "c"};
IEnumerable<string> enumerable = list;

int c1 = list.Count;
int c2 = list.Count();
int c3 = enumerable.Count();

这最后 3 个语句在性能和实现上是否存在差异?威尔list.Count()表现更差或与list.Count相同, 并且引用的类型是否重要 IEnumerable<string>

最佳答案

让我们看看 Reflector:

public static int Count<TSource>(this IEnumerable<TSource> source)
{
if (source == null)
{
throw Error.ArgumentNull("source");
}
ICollection<TSource> is2 = source as ICollection<TSource>;
if (is2 != null)
{
return is2.Count;
}
ICollection is3 = source as ICollection;
if (is3 != null)
{
return is3.Count;
}
int num = 0;
using (IEnumerator<TSource> enumerator = source.GetEnumerator())
{
while (enumerator.MoveNext())
{
num++;
}
}
return num;
}

因此,如果您的 IEnumerable<T> 工具 ICollection<T> ICollection ,它将返回 Count属性(property)。

关于c# - Count() (linq 扩展名)和 List<T>.Count 之间有区别吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6450924/

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