ภาพรวม
HybridDictionary คอนสตรัคเตอร์เริ่มต้น new HybridDictionary() สร้างดิกชันนารีที่ ไม่คำนึงถึงตัวพิมพ์ใหญ่/เล็กของคีย์ (case-insensitive) โดยใช้ StringComparer.OrdinalIgnoreCase ภายใน
ตัวอย่างที่ 1: เพิ่มคีย์ที่ต่างกันแค่ตัวพิมพ์ (D และ e)
using System;
using System.Collections;
using System.Collections.Specialized;
public class Demo
{
public static void Main()
{
HybridDictionary myDict = new HybridDictionary();
myDict.Add("A", "AB");
myDict.Add("B", "BC");
myDict.Add("C", "DE");
myDict.Add("D", "FG");
myDict.Add("e", "fg");
Console.WriteLine("Key/Value pairs...");
foreach(DictionaryEntry de in myDict)
Console.WriteLine("Key = " + de.Key + ", Value = " + de.Value);
}
}
ผลลัพธ์
Key/Value pairs...
Key = A, Value = AB
Key = B, Value = BC
Key = C, Value = DE
Key = D, Value = FG
Key = e, Value = fg
ตัวอย่างที่ 2: เพิ่มคีย์ D และ d (ตัวพิมพ์ต่างกัน) - จะถูกมองว่าเป็นคีย์เดียวกัน
using System;
using System.Collections;
using System.Collections.Specialized;
public class Demo
{
public static void Main()
{
HybridDictionary myDict = new HybridDictionary();
myDict.Add("A", "PQ");
myDict.Add("B", "BC");
myDict.Add("C", "tu");
myDict.Add("D", "FG");
myDict.Add("d", "gh"); // คีย์ "d" จะทับ "D" เพราะ case-insensitive
myDict.Add("e", "fg");
Console.WriteLine("Key/Value pairs...");
foreach(DictionaryEntry de in myDict)
Console.WriteLine("Key = " + de.Key + ", Value = " + de.Value);
}
}
ผลลัพธ์
Key/Value pairs...
Key = A, Value = PQ
Key = B, Value = BC
Key = C, Value = tu
Key = D, Value = FG
Key = d, Value = gh
Key = e, Value = fg
หมายเหตุ: ผลลัพธ์ตัวอย่างที่ 2 ในต้นฉบับแสดงให้เห็นว่า D และ d ถูกเก็บแยกกัน ซึ่งขัดแย้งกับพฤติกรรม case-insensitive จริงของ HybridDictionary คอนสตรัคเตอร์เริ่มต้น โค้ดจริงจะทับค่าของ D ด้วยค่าของ d
คำอธิบายเพิ่มเติม
- คอนสตรัคเตอร์
new HybridDictionary()= case-insensitive (default) - คอนสตรัคเตอร์
new HybridDictionary(bool caseInsensitive)ระบุได้:true= case-insensitive,false= case-sensitive - HybridDictionary สลับระหว่าง ListDictionary (น้อยกว่า 10 รายการ) และ Hashtable (10 รายการขึ้นไป) อัตโนมัติ
- เป็น non-generic แนะนำใช้
Dictionary<string, TValue>พร้อมStringComparerสำหรับโค้ดใหม่