Hashtable เป็นคอลเลกชัน Non-generic (เก็บ object) ต้อง Boxing/Unboxing สำหรับ Value Type ทำให้ช้ากว่าและไม่ Type-Safe
Dictionary<TKey, TValue> เป็น Generic Collection (ใน System.Collections.Generic) รองรับ Strong Typing ไม่ต้อง Boxing/Unboxing ประสิทธิภาพดีกว่ามาก
เปรียบเทียบความเร็ว
// Hashtable - ช้ากว่า
hashtable.ContainsKey("12345");
// Dictionary - เร็วกว่า และ Type-Safe
dictionary.ContainsKey("12345");
ข้อดีของ Dictionary เพิ่มเติม
- IntelliSense ทำงานได้เต็มที่
- Compile-time Type Checking
- ไม่ต้อง Cast ค่าที่ดึงออกมา
- รองรับ Interface ที่ทันสมัยกว่า (IDictionary<TKey,TValue>, IReadOnlyDictionary<TKey,TValue>)
สรุป: ควรใช้ Dictionary<TKey, TValue> เสมอสำหรับโค้ดใหม่ ใช้ Hashtable เฉพาะเมื่อต้องรองรับ Legacy Code เท่านั้น