HybridDictionary ให้เมธอด GetEnumerator() คืนค่า IDictionaryEnumerator สำหรับวนลูปคู่คีย์-ค่า และรองรับ foreach กับ DictionaryEntry โดยตรง
ตัวอย่างที่ 1: ใช้ foreach และ IDictionaryEnumerator
using System;
using System.Collections;
using System.Collections.Specialized;
public class Demo
{
public static void Main()
{
HybridDictionary dict1 = new HybridDictionary();
dict1.Add("A", "Books");
dict1.Add("B", "Electronics");
dict1.Add("C", "Smart Wearables");
dict1.Add("D", "Pet Supplies");
dict1.Add("E", "Clothing");
dict1.Add("F", "Footwear");
Console.WriteLine("HybridDictionary1 องค์ประกอบ...");
foreach (DictionaryEntry d in dict1)
{
Console.WriteLine(d.Key + " " + d.Value);
}
HybridDictionary dict2 = new HybridDictionary();
dict2.Add("1", "One");
dict2.Add("2", "Two");
dict2.Add("3", "Three");
dict2.Add("4", "Four");
dict2.Add("5", "Five");
dict2.Add("6", "Six");
Console.WriteLine("\nHybridDictionary2 คู่คีย์-ค่า...");
IDictionaryEnumerator demoEnum = dict2.GetEnumerator();
while (demoEnum.MoveNext())
{
Console.WriteLine("Key = " + demoEnum.Key + ", Value = " + demoEnum.Value);
}
}
}
ผลลัพธ์
HybridDictionary1 องค์ประกอบ... A Books B Electronics C Smart Wearables D Pet Supplies E Clothing F Footwear HybridDictionary2 คู่คีย์-ค่า... Key = 1, Value = One Key = 2, Value = Two Key = 3, Value = Three Key = 4, Value = Four Key = 5, Value = Five Key = 6, Value = Six
ตัวอย่างที่ 2: HybridDictionary อื่น
using System;
using System.Collections;
using System.Collections.Specialized;
public class Demo
{
public static void Main()
{
HybridDictionary dict = new HybridDictionary();
dict.Add("A", "Gary");
dict.Add("B", "Andy");
dict.Add("C", "Mark");
dict.Add("D", "Barry");
dict.Add("E", "Katie");
dict.Add("F", "John");
Console.WriteLine("HybridDictionary คู่คีย์-ค่า...");
IDictionaryEnumerator demoEnum = dict.GetEnumerator();
while (demoEnum.MoveNext())
{
Console.WriteLine("Key = " + demoEnum.Key + ", Value = " + demoEnum.Value);
}
}
}
ผลลัพธ์
HybridDictionary คู่คีย์-ค่า... Key = A, Value = Gary Key = B, Value = Andy Key = C, Value = Mark Key = D, Value = Barry Key = E, Value = Katie Key = F, Value = John
วิธีการวนลูปแบบสมัยใหม่ (แนะนำ)
// 1. ใช้ foreach กับ DictionaryEntry (รองรับใน .NET Framework)
foreach (DictionaryEntry entry in hybridDict)
{
Console.WriteLine($"Key: {entry.Key}, Value: {entry.Value}");
}
// 2. ใช้ Keys และ Values แยกกัน
foreach (var key in hybridDict.Keys)
{
Console.WriteLine($"Key: {key}, Value: {hybridDict[key]}");
}
// 3. แปลงเป็น Dictionary<TKey, TValue> (แนะนำสำหรับโค้ดใหม่)
var genericDict = new Dictionary<string, string>();
foreach (DictionaryEntry entry in hybridDict)
{
genericDict[(string)entry.Key] = (string)entry.Value;
}
// ใช้ genericDict ได้อย่างเต็มที่
ข้อสังเกตสำคัญ
HybridDictionaryสลับระหว่างListDictionary(ขนาดเล็ก) และHashtable(ขนาดใหญ่) อัตโนมัติ- ไม่รับประกันลำดับของคีย์ (Unordered)
- คลาสนี้เป็น Legacy แนะนำให้ใช้
Dictionary<TKey, TValue>สำหรับโปรเจกต์ใหม่ - รองรับคีย์
nullได้ (ต่างจาก Hashtable)