Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

ดึง Enumerator เพื่อวนลูปผ่าน HybridDictionary ใน C#

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)