لماذا Dictionary<TKey, TValue> أفضل من Hashtable في C#؟
مرحباً بالجميع! لقد بدأت مؤخراً في تعلم C# وواجهت المجموعات. أرى أن هناك `Hashtable` (من `System.Collections`) و `Dictionary` (من `System.Collections.Generic`). يبدو أن كلاهما يخزن أزواج المفتاح-القيمة، لكن الجميع ينصح باستخدام `Dictionary`.
لقد كتبت مثالاً صغيراً باستخدام `Hashtable`:
```csharp
Hashtable table = new Hashtable();
table.Add("key1", 123);
table.Add("key2", "سلسلة");
foreach (DictionaryEntry entry in table)
{
Console.WriteLine($"{entry.Key}: {entry.Value}");
}
```
وباستخدام `Dictionary`:
```csharp
Dictionary dict = new Dictionary();
dict.Add("key1", 123);
dict.Add("key2", 456); // كل شيء صارم هنا
foreach (KeyValuePair kvp in dict)
{
Console.WriteLine($"{kvp.Key}: {kvp.Value}");
}
```
لكني لا أفهم لماذا يعتبر `Dictionary` أكثر تفضيلاً. ففي النهاية، `Hashtable` أسهل في الاستخدام — لا حاجة لتحديد الأنواع، ويقبل أي كائنات. أين المشكلة؟ هل هناك