คุณสมบัติ 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