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

دليل أساسي C#

دليل متقدم C#

C# موجه الأحداث (OOP)

قاموس C# (Dictionary)

Dictionary < TKey,TValue > هو مجموعة عامة تخزن زوجات المفاتيح القيم بدون ترتيب محدد.

خصائص القاموس

  • يخزن Dictionary<TKey, TValue> زوجات المفاتيح القيم.

  • يتبع النطاق System.Collection.Generic.

  • يحقق واجهة IDictionary <TKey،TValue>.

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

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

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

  • تخزين العناصر ككائنات من نوع KeyValuePair <TKey،TValue>.

إنشاء قاموس

يمكنك إنشاء قاموس يمكنه تخزين أنواع المفاتيح والقيم من خلال تقديم كائن Dictionary<TKey،TValue>. مثال أدناه يوضح كيفية إنشاء قاموس وإضافة أزواج المفاتيح القيم.

IDictionary<int, string> numberNames = new Dictionary<int, string>();
numberNames.Add(1,"One"); //إضافة مفتاح/قيمة باستخدام طريقة Add()
numberNames.Add(2,"Two");
numberNames.Add(3,"Three");
//يحدث استثنائية وقت التنفيذ: المفتاح مضاف بالفعل.
//numberNames.Add(3, "Three"); 
foreach(KeyValuePair<int, string> kvp in numberNames)
    Console.WriteLine("مفتاح: {0}, قيمة: {1}", kvp.Key, kvp.Value);
//استخدام لغة التوليد الجمعية لإنشاء قاموس
var cities = new Dictionary<string, string>(){
	{"UK", "London, Manchester, Birmingham"},
	{"USA", "Chicago, New York, Washington"},
	{"India", "Mumbai, New Delhi, Pune"}
};
foreach(var kvp in cities)
    Console.WriteLine("مفتاح: {0}, قيمة: {1}", kvp.Key, kvp.Value);

في المثال السابق، numberNames هو قاموس من نوع Dictionary<int،string>، لذا يمكنه تخزين المفتاح من نوع int والقيمة من نوع string. وبالمثل، cities هو قاموس من نوع Dictionary<string،string>، لذا يمكنه تخزين المفتاح من نوع string والقيمة من نوع string. لا يمكن للقاموس أن يحتوي على مفتاح مكرر أو مفتاح null، بينما يمكن أن تكون القيمة مكررة أو null. يجب أن يكون المفتاح فريدًا، وإلا سيُحدث استثنائية وقت التنفيذ.

الوصول إلى عنصر القاموس

يمكنك استخدام محول الفهرس لاستخدام القاموس. تحديد المفتاح للحصول على القيمة المزودة. يمكنك أيضًا استخدام طريقة ElementAt() للحصول على KeyValuePair من المؤشر المحدد.

var cities = new Dictionary<string, string>(){
	{"UK", "London, Manchester, Birmingham"},
	{"USA", "Chicago, New York, Washington"},
	{"India", "Mumbai, New Delhi, Pune"}
};
Console.WriteLine(cities["UK"]); //طباعة مفتاح UK
Console.WriteLine(cities["USA"]);//طباعة مفتاح USA
//كود.WriteLine(cities["France"]); // استثنائية وقت التنفيذ: استثنائية وقت التنفيذ: مفتاح غير موجود
//استخدام ContainsKey()للتحقق من مفتاح غير معروف
if(cities.ContainsKey("France")){  
    Console.WriteLine(cities["France"]);
}
//استخدام TryGetValue()للحصول على قيمة مفتاح غير معروف
string result;
if(cities.TryGetValue("France", out result))
{
    Console.WriteLine(result);
}
//استخدام ElementAt()للحصول على زوج المفتاح القيمة عبر المؤشر
for (int i = 0; i < cities.Count; i++)
{
    Console.WriteLine("Key: {0}, Value: {1}", cities.ElementAt(i).Key, cities.ElementAt(i).Value);
}

تحديث القاموس

باستخدام مفتاح في محرر لتحديث قيمة المفتاح. إذا لم يكن المفتاح موجودًا في القاموس، فإنه سيقوم بإلقاء استثناء KeyNotFoundException، لذا استخدم دائمًا طريقة ContainsKey() قبل الوصول إلى مفتاح غير معروف

var cities = new Dictionary<string, string>(){
	{"UK", "London, Manchester, Birmingham"},
	{"USA", "Chicago, New York, Washington"},
	{"India", "Mumbai, New Delhi, Pune"}
};
cities["UK"] = "Liverpool, Bristol"; //تحديث قيمة مفتاح UK
cities["USA"] = "Los Angeles, Boston"; //تحديث قيمة مفتاح USA
//cities["France"] = "Paris"; //تسبب استثناء تشغيلي: KeyNotFoundException
if(cities.ContainsKey("France")){
    cities["France"] = "Paris";
}

حذف عنصر من القاموس

Remove()طريقة إزالة المفتاح القيمة الحالية من القاموس. Clear()طريقة إزالة جميع العناصر من القاموس.

var cities = new Dictionary<string, string>(){
	{"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(); // حذف جميع العناصر

هيكل فئة القائمة المرتبة

الشكل التالي يوضح هيكل فئة Dictionary العامة.

يمكنك معرفة طرق القواميس وصفاتها في docs.microsoft.com.