บทความนี้สาธิตวิธีตรวจสอบว่า Hashtable เป็นแบบอ่านอย่างเดียว (read-only) หรือไม่ โดยใช้คุณสมบัติ IsReadOnly ใน C#
ตัวอย่างที่ 1: ตรวจสอบคุณสมบัติ IsReadOnly และ IsFixedSize
using System;
using System.Collections;
public class Demo
{
public static void Main()
{
Hashtable hash = new Hashtable();
hash.Add("One", "Katie");
hash.Add("Two", "John");
hash.Add("Three", "Barry");
hash.Add("Four", "");
hash.Add("Five", "Harry");
hash.Add("Six", "F");
hash.Add("Seven", "Tom");
hash.Add("Eight", "Andy");
hash.Add("Nine", "I");
hash.Add("Ten", "Tim");
Console.WriteLine("Hashtable Key and Value pairs...");
foreach (DictionaryEntry entry in hash)
{
Console.WriteLine("{0} and {1}", entry.Key, entry.Value);
}
Console.WriteLine("Is the Hashtable having fixed size? = " + hash.IsFixedSize);
Console.WriteLine("If Hashtable read-only? = " + hash.IsReadOnly);
}
}
ผลลัพธ์
Hashtable Key and Value pairs... One and Katie Ten and Tim Five and Harry Three and Barry Seven and Tom Two and John Four and Eight and Andy Nine and I Six and F Is the Hashtable having fixed size? = False If Hashtable read-only? = False
ตัวอย่างที่ 2: ตรวจสอบ Hashtable อีกตัวอย่างหนึ่ง
using System;
using System.Collections;
public class Demo
{
public static void Main()
{
Hashtable hash = new Hashtable();
hash.Add("1", "A");
hash.Add("2", "B");
hash.Add("3", "C");
hash.Add("4", "D");
hash.Add("5", "E");
hash.Add("6", "F");
hash.Add("7", "G");
hash.Add("8", "H");
hash.Add("9", "I");
hash.Add("10", "J");
Console.WriteLine("Hashtable Key and Value pairs...");
foreach (DictionaryEntry entry in hash)
{
Console.WriteLine("{0} and {1}", entry.Key, entry.Value);
}
Console.WriteLine("Is Hashtable having fixed size? = " + hash.IsFixedSize);
Console.WriteLine("If Hashtable read-only? = " + hash.IsReadOnly);
}
}
ผลลัพธ์
Hashtable Key and Value pairs... 10 and J 1 and A 2 and B 3 and C 4 and D 5 and E 6 and F 7 and G 8 and H 9 and I Is Hashtable having fixed size? = False If Hashtable read-only? = False
สรุป
- คุณสมบัติ
IsReadOnlyคืนค่าtrueหาก Hashtable เป็นแบบอ่านอย่างเดียว มิฉะนั้นคืนค่าfalse - คุณสมบัติ
IsFixedSizeคืนค่าtrueหาก Hashtable มีขนาดคงที่ มิฉะนั้นคืนค่าfalse - Hashtable ปกติ (สร้างด้วยคอนสตรัคเตอร์เริ่มต้น) จะมี
IsReadOnly = falseและIsFixedSize = falseเสมอ — หมายความว่าสามารถเพิ่ม/ลบ/แก้ไขข้อมูลได้ - หากต้องการ Hashtable แบบอ่านอย่างเดียว ให้ใช้
Hashtable.Synchronized(new Hashtable())หรือห่อด้วย wrapper แบบ read-only - แนะนำ: ใช้
Dictionary<TKey, TValue>แทนในโค้ดสมัยใหม่ เพราะมี type safety และประสิทธิภาพดีกว่า