C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#のQueue.Dequeueメソッドとは?使い方とサンプルコードを解説

C#のQueue.Dequeue()メソッドは、キュー(Queue)の先頭にある要素を取り出し、同時にその要素をキューから削除するためのメソッドです。キューはFIFO(First In, First Out:先入れ先出し)方式のコレクションなので、最初に追加された要素から順番に取り出される仕組みになっています。

なお、先頭の要素を削除せずに参照だけしたい場合は、Peek()メソッドを使用します。Dequeue()との違いを理解しておくと便利です。

構文

Dequeueメソッドの構文は以下の通りです。

public virtual object Dequeue ();

非ジェネリック版のQueueクラスでは戻り値がobject型ですが、ジェネリック版のQueue<T>では、指定した型Tの要素がそのまま返されます。

使用例1

まずは基本的な使い方を見てみましょう。

using System;
using System.Collections.Generic;

public class Demo {
    public static void Main() {
        Queue<string> queue = new Queue<string>();

        queue.Enqueue("A");
        queue.Enqueue("B");
        queue.Enqueue("C");
        queue.Enqueue("D");
        queue.Enqueue("E");
        queue.Enqueue("F");
        queue.Enqueue("G");

        Console.WriteLine("要素数 = " + queue.Count);
        Console.WriteLine("キューの先頭の要素 = " + queue.Peek());

        // 先頭から3つの要素を取り出して削除
        queue.Dequeue();
        queue.Dequeue();
        queue.Dequeue();

        Console.WriteLine("要素数 = " + queue.Count);
    }
}

実行結果

このコードを実行すると、次のような出力が得られます。

Count of elements = 7
Element at the beginning of queue = A
Count of elements = 4

Peek()で先頭の「A」を確認した後、Dequeue()を3回呼び出すことで「A」「B」「C」が取り出され、要素数が7から4に減っていることがわかります。

使用例2

続いて、要素の中身を表示しながらDequeue()の動作を確認する例です。

using System;
using System.Collections.Generic;

public class Demo {
    public static void Main() {
        Queue<string> queue = new Queue<string>();

        queue.Enqueue("Gary");
        queue.Enqueue("Jack");
        queue.Enqueue("Ryan");
        queue.Enqueue("Kevin");
        queue.Enqueue("Mark");
        queue.Enqueue("Jack");
        queue.Enqueue("Ryan");
        queue.Enqueue("Kevin");

        Console.Write("要素数 = ");
        Console.WriteLine(queue.Count);

        Console.WriteLine("キューの内容...");
        foreach(string i in queue) {
            Console.WriteLine(i);
        }

        // 先頭の2つの要素を取り出して削除
        queue.Dequeue();
        queue.Dequeue();

        Console.WriteLine("キューの内容...更新後");
        foreach(string i in queue) {
            Console.WriteLine(i);
        }

        Console.Write("更新後の要素数 = " + queue.Count);

        // キューを空にする
        queue.Clear();

        Console.Write("\nClear後の要素数 = ");
        Console.WriteLine(queue.Count);
    }
}

実行結果

このコードを実行すると、次のような出力が得られます。

Count of elements = 8
Queue...
Gary
Jack
Ryan
Kevin
Mark
Jack
Ryan
Kevin
Queue...UPDATED
Ryan
Kevin
Mark
Jack
Ryan
Kevin
Count of elements (updated) = 6
Count of elements (updated AGAIN) = 0

このように、Dequeue()を呼び出すたびに先頭の要素が1つずつ取り出され、キューの要素数が減っていきます。また、Clear()メソッドを使うとキュー内のすべての要素を一括で削除できることも確認できます。

注意点

空のキューに対してDequeue()を呼び出すと、InvalidOperationExceptionがスローされる点に注意してください。呼び出し前にCountプロパティで要素数をチェックするか、TryDequeue()メソッドを利用すると安全です。

  1. C#のQueueクラスを使ったEnqueueとDequeueの基本操作

    Queueコレクションクラスは、C#のSystem.Collections名前空間に含まれるデータ構造の一つです。このクラスでは、要素がFIFO(First In First Out:先入れ先出し)方式で格納されます。つまり、最初に追加された要素が最初に取り出される仕組みで、映画館のチケット売り場前に並ぶ人の行列と同じイメージです。 Queueクラスには、主に次の2つのメソッドが用意されています。 Enqueue() … キューに値を追加するメソッド Dequeue() … キューから値を取り出すメソッド Enqueue:キューへの要素の追加 Enqueueメソッドを使用すると、キューの

  2. C#のQueue(キュー)クラスとは?FIFOの基本とEnqueue・Dequeueの使い方

    C#のキュー(Queue)とは キュー(Queue)は、オブジェクトを「先入れ先出し(FIFO:First-In, First-Out)」で管理するコレクションです。最初に追加した要素が最初に取り出されるという特性を持つため、タスクの順番待ちや処理の履歴管理など、追加された順序どおりに要素へアクセスしたい場面で活用されます。 要素をキューに追加することを「エンキュー(Enqueue)」、キューから要素を取り出すことを「デキュー(Dequeue)」と呼びます。 要素の追加:Enqueueメソッド キューに要素を追加するには、Enqueueメソッドを使用します。 Queue q = new Qu