4

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

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

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

4

2 回答 2

7

不。

由于SortedDictionary没有实现IList<TValue>(它有一个this[int]索引器),Last()所以别无选择,只能遍历整个事情。

于 2012-09-14T19:14:08.657 回答
5

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

于 2012-09-14T19:22:04.537 回答