更快地访问List <int> </int>的最后一个元素和第一个元素

时间:2013-12-02 14:28:06

标签: c#

我使用的语言是C#。

List<int> numbers = new List<int>();

是一个整数列表,我们想用它们来做一些计算。访问列表的第一个元素是否更快

numbers[0]

numbers.First()

此外,如果我们想要访问列表的最后一个元素,那么以

的形式访问它会更快
numbers[numbers.Count-1]

numbers.Last()

3 个答案:

答案 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()