2011-12-14 21 views
4

キューには特別なメソッドqueue.Peek()が含まれていますが、一般的なqueue.First()queue.Last()を使用できるのはなぜですか?queue.First()/ Last()の代わりにqueue.Peek()を使用する理由

+1

あなたはどのキュークラスを見ていますか? –

+0

c# 'Queue'クラス – javapowered

+0

C#では複数のキュークラスが利用できます。たとえば、[System.Collections.Queue](http://msdn.microsoft.com/en-us/library/system.collections.queue.aspx)、[System.Collections.Generic.Queue(T)](http ://msdn.microsoft.com/en-us/library/7977ey2c.aspx)、または[System.Messaging.MessageQueue]の略語を使用している可能性があります(http://msdn.microsoft.com/en-us/ /library/system.messaging.messagequeue(v=VS.100).aspx)、3つの例と同じです。 –

答えて

7

Peekは、キューの古典的な方法です。FirstLastはLinqメソッドです。キューはIEnumerableを実装する可能性が最も高いので、厳密なキューとの関連性のないメソッドFirstおよびLastを取得します。


EDIT

これは、キューの法則を曲げるために世界の終わりではありません。あなたのニーズに合わせて構造を使用しているように思えます。キューがキューのように動作することを誰が期待しているのかは、次のプログラマにとっては混乱するかもしれません。 stackedQueueと呼ばれるQueueを拡張するクラスを作成するかもしれません。次に、誰かがあなたのコードを維持する必要がある場合、キューの動作を期待しません。

+0

私は参照してください、しかし、キューは 'IEnumerable'なので、それらは動作するように保証されていますか?それで、なぜ私は余分なPeekメソッドが必要なのですか?問題は - 私は 'queue'の別の側から要素を取得し、そのために' IEnumerable'メソッドを使用する必要があります – javapowered

+0

キューの背面にアクセスする必要がある場合は、キューを使用しないでください。 – Rawling

+0

@それで何を使うの? (また 'queue'を使うこともできますが、最後に追加した値をキャッシュします) – javapowered

関連する問題