SortedDictionary上First()vs Last()的表现

时间:2012-09-14 19:09:53

标签: performance linq .net-3.5 sorteddictionary

我正在使用SortedDictionaries来模拟一个队列(由于我有一些要求),我在排序的字典上调用Last()来获取我需要出列的项目。

我只是想知道使用自定义比较器并调用First()或继续调用Last()的性能。

在反编译.NET 3.5程序集后,我发现SortedDictionary类确​​实有一个Count属性,所以我猜测框架只返回第一个被调用时位置0的项目,以及位置上的项目[count- 1]当调用Last时,我是对的吗?

2 个答案:

答案 0 :(得分:7)

没有

由于SortedDictionary未实现IList<TValue>(其中包含this[int]索引器),Last()别无选择,只能遍历整个事件。

答案 1 :(得分:4)

Last方法是Enumerable类中的扩展方法。 Last的实现首先尝试将IEnumerable(您的SortedDictionary)强制转换为IList<T>。如果可以,则使用Count属性直接访问最后一个元素。如果它不能,那么它必须迭代所有元素才能到达最后一个元素。 SortedDictionary未实现IList<T>,因此Last将遍历所有元素。