English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Hashtable هي مجموعة غير قابلة للتعميم للاحتفاظ بزوجات المفاتيح القيم، تشبه مجموعة Dictionary <TKey, TValue>. تتم تعديل البحث عن طريق حساب هش المفتاح لتحسين البحث، وتخزينها في buckets مختلفة، ثم مطابقة هش المفتاح المحدد لزيارة القيمة.
يخزن Hashtable زوجات المفاتيح القيم.
يتبع مسمى System.Collection.
يحقق واجهة IDictionary.
يجب أن يكون المفتاح فريدًا ولا يمكن أن يكون null.
يمكن أن تكون القيمة null أو مكررة.
يمكن الوصول إلى القيمة عبر مرشح يمر بملك مرتبط، مثل myHashtable[key]
تخزين العناصر كجسور DictionaryEntry.
يوضح المثال التالي كيفية إنشاء جدول التخزين بالحسابات وإضافة العناصر.
Hashtable numberNames = new Hashtable(); numberNames.Add(1,"One"); // إضافة مفتاح/قيمة باستخدام طريقة Add() numberNames.Add(2,"Two"); numberNames.Add(3,"Three"); //يؤدي إلى استثنائي في وقت التشغيل: مفتاح تم إضافته مسبقًا. استثنائي في وقت التشغيل: تم إضافة المفتاح بالفعل. //numberNames.Add(3, "Three"); foreach(DictionaryEntry de in numberNames) Console.WriteLine("مفتاح: {0}, قيمة: {1}", de.Key, de.Value); // استخدام جملة المبادئ التوجيهية لإنشاء Hashtable var cities = new Hashtable(){ {"UK", "London, Manchester, Birmingham"}, {"USA", "Chicago, New York, Washington"}, {"India", "Mumbai, New Delhi, Pune"} }; foreach(DictionaryEntry de in cities) Console.WriteLine("مفتاح: {0}, قيمة: {1}", de.Key, de.Value);
مجموعة hashtable يمكن أن تشمل جميع عناصر القاموس، مثل ما يلي.
Dictionary<int, string> dict = new Dictionary<int, string>(); dict.Add(1, "one"); dict.Add(2, "two"); dict.Add(3, "three"); Hashtable ht = new Hashtable(dict);
باستخدام مؤشر النصي، يمكنك استرجاع القيمة الموجودة بجدول الخوارزميات. Hashtable ليست متجانسة، لذا عندما تقوم بتحديد قيمته، عليك إجراء تحويل إجباري.
// استخدام جملة المبادئ التوجيهية لإنشاء Hashtable var cities = new Hashtable(){ {"UK", "London, Manchester, Birmingham"}, {"USA", "Chicago, New York, Washington"}, {"India", "Mumbai, New Delhi, Pune"} }; string citiesOfUK = (string) cities["UK"]; // تحويل للخطاب string citiesOfUSA = (string) cities["USA"]; // تحويل للخطاب Console.WriteLine(citiesOfUK); Console.WriteLine(citiesOfUSA); cities["UK"] = "Liverpool, Bristol"; // تحديث قيمة UK cities["USA"] = "Los Angeles, Boston"; // تحديث قيمة USA if(!cities.ContainsKey("France")){ cities["France"] = "Paris"; }
الطريقة Remove () تزيل القيمة المطابقة للقيمة المحددة في Hashtable. إذا لم يُجد القيمة المحددة في Hashtable، يُعطى استثنائي KeyNotfoundException، لذا من الضروري استخدام الطريقة ContainsKey () للتحقق من وجود الключ الحالي قبل الإزالة.
باستخدام الطريقة Clear() يمكنك إزالة كل العناصر بشكل جماعي.
var cities = new Hashtable(){ {"UK", "London, Manchester, Birmingham"}, {"USA", "Chicago, New York, Washington"}, {"India", "Mumbai, New Delhi, Pune"} }; cities.Remove("UK"); // إزالة UK //cities.Remove("France"); // يسبب استثناء تشخيصي في الوقت التشغيل: KeyNotFoundException if(cities.ContainsKey("France")){ // قبل إخراج المفتاح، تأكد من ذلك cities.Remove("France"); } cities.Clear(); // إزالة جميع العناصر
الشكل التالي يوضح هيكلHashtable.