4

SortedDictionariesを使用してキューをシミュレートしています(いくつかの要件があるため)。また、ソートされたディクショナリに対してLast()を呼び出して、デキューする必要のあるアイテムを取得しています。

カスタム比較機能を使用してFirst()を呼び出すか、Last()を呼び出し続けるパフォーマンスについて疑問に思っていました。

.NET 3.5アセンブリを逆コンパイルした後、SortedDictionaryクラスにCountプロパティがあることがわかりました。したがって、フレームワークは、Firstが呼び出されたときに位置0のアイテムを返し、位置[count-1]のときにアイテムを返すと推測しています。最後は呼ばれます、私は正しいですか?

4

2 に答える 2

7

いいえ。

(インデクサーを持っている)をSortedDictionary実装していないので、すべてを繰り返す以外に選択肢はありません。IList<TValue>this[int]Last()

于 2012-09-14T19:14:08.657 に答える
5

Lastメソッドは、Enumerableクラスの拡張メソッドです。IEnumerableLastの実装は、最初に(your SortedDictionary)をにキャストしようとしますIList<T>。可能であれば、Countプロパティを使用して、最後の要素に直接アクセスします。それができない場合は、最後の要素に到達するためにすべての要素を反復処理する必要があります。SortedDictionaryは実装されていないためIList<T>、Lastはすべての要素を反復処理します。

于 2012-09-14T19:22:04.537 に答える