Avatar ·

لماذا يُفضل 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"]; // لا حاجة للتحويل ``` سؤالي: ما الفرق الجوهري؟