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

ตรวจสอบว่า StringDictionary มีคีย์เฉพาะหรือไม่ใน C#

บทความนี้สาธิตวิธีตรวจสอบว่า StringDictionary มีคีย์ (key) ที่ระบุอยู่หรือไม่ โดยใช้เมธอด ContainsKey() ใน C#

ตัวอย่างที่ 1: ตรวจสอบคีย์ที่มีอยู่และไม่มีอยู่

using System;
using System.Collections;
using System.Collections.Specialized;

public class Demo
{
    public static void Main()
    {
        StringDictionary strDict1 = new StringDictionary();
        strDict1.Add("A", "John");
        strDict1.Add("B", "Andy");
        strDict1.Add("C", "Tim");
        strDict1.Add("D", "Ryan");
        strDict1.Add("E", "Kevin");
        strDict1.Add("F", "Katie");
        strDict1.Add("G", "Brad");

        Console.WriteLine("StringDictionary1 elements...");
        foreach (DictionaryEntry d in strDict1)
        {
            Console.WriteLine(d.Key + " " + d.Value);
        }

        Console.WriteLine("Does StringDictionary1 has key G? " + strDict1.ContainsKey("G"));

        StringDictionary strDict2 = new StringDictionary();
        strDict2.Add("A", "John");
        strDict2.Add("B", "Andy");
        strDict2.Add("C", "Tim");
        strDict2.Add("D", "Ryan");
        strDict2.Add("E", "Kevin");
        strDict2.Add("F", "Katie");
        strDict2.Add("G", "Brad");

        Console.WriteLine("\nStringDictionary2 elements...");
        foreach (DictionaryEntry d in strDict2)
        {
            Console.WriteLine(d.Key + " " + d.Value);
        }

        Console.WriteLine("\nIs Dictionary2 equal to Dictionary1? = " + strDict2.Equals(strDict1));
    }
}

ผลลัพธ์

StringDictionary1 elements...
a John
b Andy
c Tim
d Ryan
e Kevin
f Katie
g Brad
Does StringDictionary1 has key G? True
StringDictionary2 elements...
a John
b Andy
c Tim
d Ryan
e Kevin
f Katie
g Brad
Is Dictionary2 equal to Dictionary1? = False

ตัวอย่างที่ 2: ตรวจสอบคีย์ใน StringDictionary อีกตัวอย่าง

using System;
using System.Collections;
using System.Collections.Specialized;

public class Demo
{
    public static void Main()
    {
        StringDictionary strDict1 = new StringDictionary();
        strDict1.Add("A", "John");
        strDict1.Add("B", "Andy");
        strDict1.Add("C", "Tim");
        strDict1.Add("D", "Ryan");
        strDict1.Add("E", "Kevin");
        strDict1.Add("F", "Katie");
        strDict1.Add("G", "Brad");

        Console.WriteLine("StringDictionary1 elements...");
        foreach (DictionaryEntry d in strDict1)
        {
            Console.WriteLine(d.Key + " " + d.Value);
        }

        Console.WriteLine("Does StringDictionary1 has key G? " + strDict1.ContainsKey("G"));

        StringDictionary strDict2 = new StringDictionary();
        strDict2.Add("A", "John");
        strDict2.Add("B", "Andy");
        strDict2.Add("C", "Tim");
        strDict2.Add("D", "Ryan");
        strDict2.Add("E", "Kevin");
        strDict2.Add("F", "Katie");
        strDict2.Add("G", "Brad");

        Console.WriteLine("\nStringDictionary2 elements...");
        foreach (DictionaryEntry d in strDict2)
        {
            Console.WriteLine(d.Key + " " + d.Value);
        }

        Console.WriteLine("\nIs Dictionary2 equal to Dictionary1? = " + strDict2.Equals(strDict1));
        Console.WriteLine("Does StringDictionary2 has key B? " + strDict2.ContainsKey("B"));
    }
}

ผลลัพธ์

StringDictionary1 elements...
a John
b Andy
c Tim
d Ryan
e Kevin
f Katie
g Brad
Does StringDictionary1 has key G? True
StringDictionary2 elements...
a John
b Andy
c Tim
d Ryan
e Kevin
f Katie
g Brad
Is Dictionary2 equal to Dictionary1? = False
Does StringDictionary2 has key B? True

สรุป

  • เมธอด ContainsKey() คืนค่า true หากคีย์มีอยู่ใน StringDictionary มิฉะนั้นคืนค่า false
  • การเปรียบเทียบด้วย Equals() ระหว่างออบเจ็กต์สองตัวจะคืนค่า false เพราะเป็นการเปรียบเทียบอ้างอิง (reference equality) ไม่ใช่ค่า (value equality)
  • StringDictionary ไม่ควรใช้ในโค้ดใหม่ ควรใช้ Dictionary<string, string> แทนซึ่งมีประสิทธิภาพดีกว่าและรองรับ generic