我正在使用SortedDictionaries来模拟一个队列(由于我有一些要求),我在排序的字典上调用Last()来获取我需要出列的项目。
我只是想知道使用自定义比较器并调用First()或继续调用Last()的性能。
在反编译.NET 3.5程序集后,我发现SortedDictionary类确实有一个Count属性,所以我猜测框架只返回第一个被调用时位置0的项目,以及位置上的项目[count- 1]当调用Last时,我是对的吗?
答案 0 :(得分:7)
没有
由于SortedDictionary
未实现IList<TValue>
(其中包含this[int]
索引器),Last()
别无选择,只能遍历整个事件。
答案 1 :(得分:4)
Last方法是Enumerable
类中的扩展方法。 Last的实现首先尝试将IEnumerable
(您的SortedDictionary
)强制转换为IList<T>
。如果可以,则使用Count属性直接访问最后一个元素。如果它不能,那么它必须迭代所有元素才能到达最后一个元素。 SortedDictionary
未实现IList<T>
,因此Last将遍历所有元素。