【C#】Hashtableを反復処理するための列挙子(Enumerator)を取得する方法
C#のHashtableを反復処理するための列挙子(Enumerator)を取得するには、GetEnumerator()メソッドを使用します。このメソッドはIDictionaryEnumerator型のオブジェクトを返し、MoveNext()メソッドを呼び出しながら各要素のキー(Key)と値(Value)に順番にアクセスできます。
基本的な使い方
以下の例では、10個のキーと値のペアを持つHashtableを作成し、まずforeachループで内容を表示した後、GetEnumerator()メソッドで取得した列挙子を使って反復処理を行っています。
using System;
using System.Collections;
public class Demo {
public static void Main(){
Hashtable hash = new Hashtable(10);
hash.Add("1", "A");
hash.Add("2", "B");
hash.Add("3", "C");
hash.Add("4", "D");
hash.Add("5","E");
hash.Add("6", "F");
hash.Add("7", "G");
hash.Add("8","H");
hash.Add("9", "I");
hash.Add("10", "J");
Console.WriteLine("Hashtable Key and Value pairs...");
foreach(DictionaryEntry entry in hash){
Console.WriteLine("{0} and {1} ", entry.Key, entry.Value);
}
Console.WriteLine("Is the Hashtable having fixed size? = "+hash.IsFixedSize);
Console.WriteLine("Count of entries in Hashtable = "+ hash.Count);
Console.WriteLine("\nEnumerator to iterate through the Hashtable...");
IDictionaryEnumerator demoEnum = hash.GetEnumerator();
while (demoEnum.MoveNext())
Console.WriteLine("Key = " + demoEnum.Key + ", Value = " + demoEnum.Value);
hash.Clear();
}
}
実行結果
上記のコードを実行すると、次のような出力が得られます。
Hashtable Key and Value pairs... 10 and J 1 and A 2 and B 3 and C 4 and D 5 and E 6 and F 7 and G 8 and H 9 and I Is the Hashtable having fixed size? = False Count of entries in Hashtable = 10 Enumerator to iterate through the Hashtable... Key = 10, Value = J Key = 1, Value = A Key = 2, Value = B Key = 3, Value = C Key = 4, Value = D Key = 5, Value = E Key = 6, Value = F Key = 7, Value = G Key = 8, Value = H Key = 9, Value = I
ポイント解説
- GetEnumerator():Hashtableの要素を走査するための
IDictionaryEnumeratorを返します。 - MoveNext():列挙子を次の要素へ進めます。次の要素が存在する場合はtrue、末尾に達した場合はfalseを返します。
- Key / Value プロパティ:現在位置しているエントリのキーと値をそれぞれ取得できます。
- IsFixedSize:Hashtableが固定サイズかどうかを示すbool値を返します。通常のHashtableではfalseになります。
なお、Hashtableは内部的にハッシュテーブル構造を採用しているため、要素の順序は挿入順とは限りません。出力結果でもキー「10」が最初に表示されている点に注意してください。
別の例
文字列のキーを使用した別の例を見てみましょう。
using System;
using System.Collections;
public class Demo {
public static void Main(){
Hashtable hash = new Hashtable(10);
hash.Add("One", "A");
hash.Add("Two", "B");
hash.Add("Three", "C");
hash.Add("Four", "D");
hash.Add("Five","E");
hash.Add("Six", "F");
Console.WriteLine("Hashtable Key and Value pairs...");
Console.WriteLine("\nEnumerator to iterate through the Hashtable...");
IDictionaryEnumerator demoEnum = hash.GetEnumerator();
while (demoEnum.MoveNext())
Console.WriteLine("Key = " + demoEnum.Key + ", Value = " + demoEnum.Value);
hash.Clear();
}
}
実行結果
このコードを実行すると、次の出力が生成されます。
Hashtable Key and Value pairs... Enumerator to iterate through the Hashtable... Key = One, Value = A Key = Five, Value = E Key = Three, Value = C Key = Two, Value = B Key = Four, Value = D Key = Six, Value = F
このように、GetEnumerator()メソッドとIDictionaryEnumeratorを組み合わせることで、Hashtable内のすべてのキーと値のペアを簡単に反復処理できます。最後にClear()メソッドを呼び出して、Hashtableの全要素を削除している点にも注目してください。
-
C#でStringCollectionを反復処理する列挙子(Enumerator)を取得する方法
StringCollectionを反復処理するための列挙子(Enumerator)を取得するには、GetEnumerator()メソッドを使用します。このメソッドはStringEnumerator型のオブジェクトを返し、MoveNext()とCurrentを組み合わせることで、コレクション内の各要素に順番にアクセスできます。基本的な使い方まずは、配列の要素をStringCollectionに追加し、列挙子を使って反復処理する例を見てみましょう。using System; using System.Collections.Specialized; public class Demo { &nbs
-
C#のHashtableクラスにおけるItemプロパティとは?基本的な使い方を解説
HashtableクラスのItemプロパティとは C#のHashtableクラスにおけるItemプロパティは、指定したキーに関連付けられた値を取得または設定するためのプロパティです。C#ではインデクサとして実装されているため、ht[key]というシンプルな形式で直感的にアクセスできます。 このプロパティの大きな特徴は、既存要素の読み書きだけでなく、新しい要素の追加にも利用できる点です。 存在しないキーで新規要素を追加する方法 指定したキーがHashtable内にまだ存在しない場合でも、次のように代入文を書くだけで、そのキーと値が新しい要素として自動的に登録されます。 myCollection