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

ดึงคอลเลกชันคีย์จาก HybridDictionary ใน C#

คุณสมบัติ Keys ของ HybridDictionary คืนค่า ICollection ที่มีคีย์ทั้งหมด สามารถนำไปใช้กับ CopyTo เพื่อคัดลอกไปยังอาร์เรย์ หรือวนลูปด้วย foreach ได้โดยตรง

ตัวอย่างที่ 1: คัดลอกคีย์ไปยังอาร์เรย์สตริง

using System;
using System.Collections.Specialized;

public class Demo
{
    public static void Main()
    {
        HybridDictionary dict = new HybridDictionary();
        dict.Add("One", "Katie");
        dict.Add("Two", "Andy");
        dict.Add("Three", "Gary");
        dict.Add("Four", "Mark");
        dict.Add("Five", "Marie");
        dict.Add("Six", "Sam");
        dict.Add("Seven", "Harry");
        dict.Add("Eight", "Kevin");
        dict.Add("Nine", "Ryan");

        // สร้างอาร์เรย์ขนาดเท่ากับจำนวนคีย์
        String[] strArr = new String[dict.Count];
        
        // คัดลอกคีย์ไปยังอาร์เรย์เริ่มที่ดัชนี 0
        dict.Keys.CopyTo(strArr, 0);

        // แสดงคีย์ทั้งหมด
        for (int i = 0; i < dict.Count; i++)
        {
            Console.WriteLine(strArr[i]);
        }
    }
}

ผลลัพธ์

Eight
Seven
Four
Three
One
Five
Six
Two
Nine

ตัวอย่างที่ 2: คีย์เป็นตัวเลขสตริง

using System;
using System.Collections.Specialized;

public class Demo
{
    public static void Main()
    {
        HybridDictionary dict = new HybridDictionary();
        dict.Add("1", "A");
        dict.Add("2", "B");
        dict.Add("3", "C");
        dict.Add("4", "D");
        dict.Add("5", "E");
        dict.Add("6", "F");

        String[] strArr = new String[dict.Count];
        dict.Keys.CopyTo(strArr, 0);

        for (int i = 0; i < dict.Count; i++)
        {
            Console.WriteLine(strArr[i]);
        }
    }
}

ผลลัพธ์

1
2
3
4
5
6

วิธีการอื่น: ใช้ foreach โดยตรง

// วนลูปคีย์โดยตรง ไม่ต้องคัดลอกไปอาร์เรย์
foreach (var key in dict.Keys)
{
    Console.WriteLine(key);
}

// หรือใช้ LINQ (ต้อง using System.Linq)
var keysList = dict.Keys.Cast<string>().ToList();
keysList.ForEach(k => Console.WriteLine(k));

ข้อสังเกต

  • ลำดับของคีย์ใน HybridDictionary ไม่ได้รับการรับประกัน (ไม่เรียงลำดับ)
  • หากต้องการคีย์เรียงลำดับ ควรใช้ SortedDictionary หรือ SortedList แทน
  • Keys คืนค่า ICollection ซึ่งรองรับ Count, CopyTo, และ GetEnumerator