English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

تعليمات أساسية C#

تعليمات متقدمة C#

C# تعليمات تعامل مع الكائنات (OOP)

C# Hashtable (جدول التخزين بالحسابات)

Hashtable هي مجموعة غير قابلة للتعميم للاحتفاظ بزوجات المفاتيح القيم، تشبه مجموعة Dictionary <TKey, TValue>. تتم تعديل البحث عن طريق حساب هش المفتاح لتحسين البحث، وتخزينها في buckets مختلفة، ثم مطابقة هش المفتاح المحدد لزيارة القيمة.

خصائص Hashtable

  • يخزن Hashtable زوجات المفاتيح القيم.

  • يتبع مسمى System.Collection.

  • يحقق واجهة IDictionary.

  • يجب أن يكون المفتاح فريدًا ولا يمكن أن يكون null.

  • يمكن أن تكون القيمة null أو مكررة.

  • يمكن الوصول إلى القيمة عبر مرشح يمر بملك مرتبط، مثل myHashtable[key]

  • تخزين العناصر كجسور DictionaryEntry.

إنشاء جدول التخزين بالحسابات (HashTable)

يوضح المثال التالي كيفية إنشاء جدول التخزين بالحسابات وإضافة العناصر.

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.

الجداول العشوائية في C#