gpt4 book ai didi

c# - IEnumerable.Last() 是否针对 List 进行了优化?

转载 作者:太空狗 更新时间:2023-10-29 21:09:22 26 4
gpt4 key购买 nike

我有一个 List<T> , 称为 L , 包含 N 项。

L.Last() , IEnumerable<T>扩展方法,要在线性时间内遍历所有 N 项?

或者它是否经过内部优化以具有 L[L.Count - 1] 的恒定时间性能?

最佳答案

你是对的,如果你看一下代码如何实现 Last (来自反射器):

public static TSource Last<TSource>(this IEnumerable<TSource> source)
{
if (source == null)
{
throw Error.ArgumentNull("source");
}
IList<TSource> list = source as IList<TSource>;
if (list != null)
{
int count = list.Count;
if (count > 0)
{
return list[count - 1];
}
}
else
{
using (IEnumerator<TSource> enumerator = source.GetEnumerator())
{
if (enumerator.MoveNext())
{
TSource current;
do
{
current = enumerator.Current;
}
while (enumerator.MoveNext());
return current;
}
}
}
throw Error.NoElements();
}

它实际上针对 List<T> 进行了优化通过返回 list[count - 1];

关于c# - IEnumerable<T>.Last() 是否针对 List<T> 进行了优化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18200049/

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