我使用的语言是C#。
让
List<int> numbers = new List<int>();
是一个整数列表,我们想用它们来做一些计算。访问列表的第一个元素是否更快
numbers[0]
或
numbers.First()
此外,如果我们想要访问列表的最后一个元素,那么以
的形式访问它会更快numbers[numbers.Count-1]
或
numbers.Last()
答案 0 :(得分:18)
IEnumerable<T>
或First()
时, Last()
个扩展程序会检查来源类型。如果source为IList<T>
,则使用索引:
IList<TSource> list = source as IList<TSource>;
if (list != null)
{
if (list.Count > 0)
{
return list[0];
}
}
因此,不会创建枚举器,性能几乎相同。但简单的索引当然会更快。
答案 1 :(得分:4)
基于索引的访问(分别为numbers[0]
和numbers[numbers.Count - 1]
)可能会在非常小的程度上更快,因为First()
和Last()
需要额外的方法调用访问列表项之前的扩展方法First()
和Last()
(再次基于它们的索引)。
答案 2 :(得分:2)
如果是List<T>
,numbers[0]
和numbers.First()
都会回归到同一个实现,因此没有显着差异。同样代表Last()
。