لماذا يُفضل Dictionary على Hashtable في C#؟ تحليل الفروقات
مرحباً بالجميع! أنا مطور C# مبتدئ واجهت موقفاً حيرني. أثناء دراسة المجموعات (Collections)، صادفت صنفين متشابهين: `Hashtable` و `Dictionary`. كلاهما، كما فهمت، يخزنان أزواج "مفتاح-قيمة" ويسمحان بالبحث السريع عن البيانات باستخدام المفتاح.
في أمثلة التعليمات البرمجية القديمة وفي بعض الكتب، أرى غالباً `Hashtable`. على سبيل المثال، هكذا:
```csharp
Hashtable table = new Hashtable();
table.Add("مفتاح1", "قيمة1");
table.Add(123, 42); // المفتاح — int، القيمة — int
string val = (string)table["مفتاح1"]; // تحتاج تحويلاً صريحاً
```
لكن في المشاريع الحديثة وعلى Stack Overflow، الجميع يكتب عن `Dictionary`. جربت كلا الخيارين ولاحظت أن الكود مع `Dictionary` يبدو مختلفاً:
```csharp
Dictionary dict = new Dictionary();
dict.Add("مفتاح1", "قيمة1");
// dict.Add(123, 42); // خطأ في الترجمة! النوع غير صحيح
string val = dict["مفتاح1"]; // لا حاجة للتحويل
```
سؤالي: ما الفرق الجوهري؟