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

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

C#のQueue.GetEnumerator()メソッドは、Queue(キュー)に格納された要素を先頭から順番に走査するための列挙子(IEnumerator)を返すメソッドです。この列挙子を使うことで、foreachループを使わずにキュー内の各要素へアクセスできます。

構文

GetEnumerator()メソッドの構文は以下のとおりです。

public virtual System.Collections.IEnumerator GetEnumerator ();

パラメータと戻り値

  • パラメータ:なし
  • 戻り値:Queueの要素を反復処理するためのSystem.Collections.IEnumeratorオブジェクト

使い方のポイント

取得した列挙子は、通常以下の手順で使用します。

  1. MoveNext()メソッドで次の要素へ進む(戻り値がtrueの間、要素が残っていることを意味します)
  2. Currentプロパティで現在位置の要素を取得する

使用例1:複数のキューを列挙する

まずは基本的な使用例を見てみましょう。2つのキューを作成し、それぞれの要素を列挙子で出力しています。

using System;
using System.Collections;

public class Demo {
   public static void Main(){
      Queue queue = new Queue();
      queue.Enqueue(100);
      queue.Enqueue(200);
      queue.Enqueue(300);
      queue.Enqueue(400);
      Console.WriteLine("Queue1...");
      IEnumerator demoEnum = queue.GetEnumerator();
      while (demoEnum.MoveNext()){
         Console.WriteLine(demoEnum.Current);
      }

      Queue queue2 = new Queue();
      queue2.Enqueue(100);
      queue2.Enqueue(150);
      queue2.Enqueue(300);
      queue2.Enqueue(400);
      Console.WriteLine("\nQueue2...");
      demoEnum = queue2.GetEnumerator();
      while (demoEnum.MoveNext()){
         Console.WriteLine(demoEnum.Current);
      }

      Console.WriteLine(queue.Equals(queue2));
   }
}

実行結果

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

Queue1...
100
200
300
400
Queue2...
100
150
300
400
False

最後の「False」は、2つのキューの内容が異なるため、Equals()メソッドの比較結果がfalseになったことを示しています。

使用例2:多数の要素を持つキューを列挙する

続いて、10個の要素を持つキューを列挙子で順に出力する例です。

using System;
using System.Collections;

public class Demo {
   public static void Main(){
      Queue queue = new Queue();
      queue.Enqueue(100);
      queue.Enqueue(200);
      queue.Enqueue(300);
      queue.Enqueue(400);
      queue.Enqueue(500);
      queue.Enqueue(600);
      queue.Enqueue(700);
      queue.Enqueue(800);
      queue.Enqueue(900);
      queue.Enqueue(1000);
      Console.WriteLine("Queue...");
      IEnumerator demoEnum = queue.GetEnumerator();
      while (demoEnum.MoveNext()){
         Console.WriteLine(demoEnum.Current);
      }
   }
}

実行結果

実行すると、キューに追加した順序どおりにすべての要素が出力されます。

Queue...
100
200
300
400
500
600
700
800
900
1000

まとめ

Queue.GetEnumerator()メソッドを使えば、キュー内の要素をFIFO(先入れ先出し)の順序で簡単に走査できます。MoveNext()とCurrentを組み合わせたwhileループは、列挙子を扱う際の基本パターンなので、ぜひ覚えておきましょう。

  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