C#でコレクションを反復処理する列挙子(Enumerator)を取得する方法
C#の Collection<T> クラスには、コレクション内の要素を順番に反復処理するための列挙子(Enumerator)を取得できる GetEnumerator() メソッドが用意されています。このメソッドを使えば、foreach 文を使わずに、MoveNext() と Current プロパティを組み合わせて各要素へアクセスできます。
ここでは、実際のコード例を通じて、列挙子の取得方法と使い方を詳しく解説します。
例1:文字列型コレクションの場合
まずは Collection<string> に複数の名前を追加し、列挙子を使ってすべての要素を出力する例を見てみましょう。
using System;
using System.Collections.ObjectModel;
public class Demo {
public static void Main() {
Collection<string> col = new Collection<string>();
col.Add("Andy");
col.Add("Kevin");
col.Add("John");
col.Add("Kevin");
col.Add("Mary");
col.Add("Katie");
col.Add("Barry");
col.Add("Nathan");
col.Add("Mark");
Console.WriteLine("要素数 = " + col.Count);
Console.WriteLine("コレクションを反復処理しています...");
var enumerator = col.GetEnumerator();
while (enumerator.MoveNext()) {
Console.WriteLine(enumerator.Current);
}
}
}出力結果
要素数 = 9 コレクションを反復処理しています... Andy Kevin John Kevin Mary Katie Barry Nathan Mark
例2:整数型コレクションの場合
次に、Collection<int> を使った別の例です。文字列だけでなく、数値型でも同じように列挙子で反復処理できます。
using System;
using System.Collections.ObjectModel;
public class Demo {
public static void Main() {
Collection<int> col = new Collection<int>();
col.Add(100);
col.Add(200);
col.Add(300);
col.Add(400);
col.Add(500);
Console.WriteLine("要素数 = " + col.Count);
Console.WriteLine("コレクションを反復処理しています...");
var enumerator = col.GetEnumerator();
while (enumerator.MoveNext()) {
Console.WriteLine(enumerator.Current);
}
}
}出力結果
要素数 = 5 コレクションを反復処理しています... 100 200 300 400 500
ポイント解説
- GetEnumerator():コレクションを反復処理するための列挙子オブジェクトを返します。
- MoveNext():次の要素にカーソルを進めます。次の要素が存在する場合は
true、末尾に達した場合はfalseを返します。 - Current:現在位置にある要素を取得します。必ず
MoveNext()を先に呼び出してから使用してください。 - なお、通常の反復処理では
foreach文を使うのがより簡潔ですが、列挙子を直接操作することで、より細かい制御が可能になります。
-
C#でDictionaryを反復処理する列挙子を取得する方法(GetEnumeratorの使い方)
C#のDictionary<TKey, TValue>クラスでは、GetEnumerator()メソッドを呼び出すことで、ディクショナリ内のキーと値のペアを順番に走査する列挙子(Enumerator)を取得できます。戻り値はIDictionaryEnumerator型として扱うことができ、MoveNext()メソッドで次の要素へ移動しながら、KeyプロパティとValueプロパティでそれぞれキーと値を読み取ります。 例1:int型のキーを持つDictionaryの場合 まずは、キーがint型・値がstring型のディクショナリを作成し、列挙子を使って全要素を表示する基本例を見てみま
-
C#でStringCollectionを反復処理する列挙子(Enumerator)を取得する方法
StringCollectionを反復処理するための列挙子(Enumerator)を取得するには、GetEnumerator()メソッドを使用します。このメソッドはStringEnumerator型のオブジェクトを返し、MoveNext()とCurrentを組み合わせることで、コレクション内の各要素に順番にアクセスできます。基本的な使い方まずは、配列の要素をStringCollectionに追加し、列挙子を使って反復処理する例を見てみましょう。using System; using System.Collections.Specialized; public class Demo { &nbs