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

GR7*_*GR7 4 linq performance sorteddictionary .net-3.5

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

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

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

SLa*_*aks 7

没有.

既然SortedDictionary没有实现IList<TValue>(它有一个this[int]索引器),Last()别无选择,只能迭代整个事情.


hat*_*ica 5

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