English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Queueは特別な集合タイプで、FIFO(先入先出)方式で要素を格納します。それはStack <T>集合とは正反対です。それは追加順に要素を含みます。C#にはジェネリックQueue<T>と非ジェネリックQueueコレクションがあります。ジェネリックQueue<T>コレクションの使用が推奨されます。
Queue<T>はFIFO(先入先出)の集合です。
System.Collection.Generic名前空間の下にあります。
Queue<T>は指定されたタイプの要素を含むことができます。それにより、コンパイル時のタイプチェックが提供され、バインディングは実行されません。/のデキャスティングはサポートされていません。それはジェネリックです。
Enqueue()メソッドを使用して要素を追加できます。コレクションの初期化(collection-initializer)文法。
Dequeue()とPeek()メソッドを使用して要素を取得できます。インデクサーはサポートされていません。
以下の図はQueueコレクションを示しています:
Queue<T>が格納する要素のタイプに型パラメータを指定して作成できるオブジェクトです。以下の例では、Enqueue()メソッドを使用してQueue<T>に要素を作成および追加します。Queueコレクションはnull(参照型)および重複の値を許可します。
Queue<int> callerIds = new Queue<int>(); callerIds.Enqueue(1); callerIds.Enqueue(2); callerIds.Enqueue(3); callerIds.Enqueue(4); foreach(var id in callerIds) Console.Write(id); //プリント1234
属性 | 使用法 |
---|---|
Count | クエート中の要素の総数を返します。 |
メソッド | 使用法 |
---|---|
Enqueue(T) | プロジェクトをクエートに追加 |
Dequeue | クエートの先頭からプロジェクトを返し、それをクエートから削除 |
Peek(T) | クエートから最初のプロジェクトを返し、それを削除しません |
Contains(T) | プロジェクトがクエートに存在するか確認 |
Clear() | クエートからすべてのプロジェクトを削除 |
Dequeue()とPeek()メソッドは、クエートコレクション内の最初の要素を検索するために使用されます。Dequeue()は、FIFOの順序で要素を格納するクエートから最初の要素を削除し、返します。空のクエート上でDequeue()メソッドを呼び出すとInvalidOperation例外が発生します。したがって、クエートを呼び出す前に、常にクエートの総数がゼロより大きいかどうかを確認してください。
Queue<string> strQ = new Queue<string>(); strQ.Enqueue("H"); strQ.Enqueue("e"); strQ.Enqueue("l"); strQ.Enqueue("l"); strQ.Enqueue("o"); Console.WriteLine("要素総数: {0}", strQ.Count); //出力 5 while (strQ.Count > 0){ Console.WriteLine(strQ.Dequeue()); //出力 Hello } Console.WriteLine("要素総数: {0}", strQ.Count); //出力 0
Peek()メソッドは常にクエートコレクションから最初のアイテムを返し、それをクエートから削除しません。空のクエート上でこのメソッドを呼び出すとInvalidOperationExceptionが発生します。
Queue<string> strQ = new Queue<string>(); strQ.Enqueue("H"); strQ.Enqueue("e"); strQ.Enqueue("l"); strQ.Enqueue("l"); strQ.Enqueue("o"); Console.WriteLine("要素総数: {0}", strQ.Count); //出力 5 if(strQ.Count > 0){ Console.WriteLine(strQ.Peek()); //出力 H Console.WriteLine(strQ.Peek()); //出力 H } Console.WriteLine("要素総数: {0}", strQ.Count); //出力 0
Contains()メソッドはキューに項目が存在するかどうかを確認します。指定された項目が存在する場合、trueを返し、そうでない場合、falseを返します。
Contains() シグネチャ:
bool Contains(object obj);
Queue<int> callerIds = new Queue<int>(); callerIds.Enqueue(1); callerIds.Enqueue(2); callerIds.Enqueue(3); callerIds.Enqueue(4); callerIds.Contains(2); //true callerIds.Contains(10); //false