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

สร้าง HybridDictionary ว่างพร้อมระบุ Case Sensitivity ใน C#

ภาพรวม

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 สำหรับโค้ดใหม่