القاموس هو مجموعة من العناصر، حيث يتكوّن كل عنصر من مفتاح وقيمة، بحيث إذا مُرِّر مفتاح إلى إحدى طرق القاموس فإنها تُرجع القيمة المرتبطة به. وله الدور نفسه الذي تؤديه الخرائط أو المصفوفات الترابطية في لغات أخرى.
يمكن إنشاء قاموس كما يلي:
new Dictionary<int, string>();
// Empty dictionary
أو
new Dictionary<int, string>
{
[1] = "One",
[2] = "Two"
};
// Or
new Dictionary<int, string>
{
{1, "One"},
{2, "Two"}
};
// 1 => "One", 2 => "Two"
لاحظ أن نوعَي المفتاح والقيمة جزءان من تعريف القاموس.
بعد إنشائه، يمكن إضافة المدخلات إلى القاموس أو حذفها منه باستخدام طريقتيه المدمجتين Add وRemove.
يجري استرجاع القيم في القاموس أو تحديثها عبر فهرسته باستخدام مفتاح:
var numbers = new Dictionary<int, string>
{
{1, "One"},
{2, "Two"}
};
// Set the value of the element with key 2 to "Deux"
numbers[2] = "Deux";
// Get the value of the element with key 2
numbers[2];
// => "Deux"
يمكنك التحقق مما إذا كانت قيمة موجودة في القاموس باستخدام:
var dict = new Dictionary<string, string>{/*...*/};
dict.ContainsKey("some key that exists");
// => true
عند التعداد على قاموس، سيتم التعداد على أزواج المفتاح/القيمة الخاصة به. وللقواميس أيضًا خصائص تُتيح التعداد على مفاتيحه أو قيمه.
في هذا التمرين ستكتب كودًا لتتبّع رموز الاتصال الدولية عبر قاموس لرموز الاتصال الدولية.
يستخدم القاموس عددًا صحيحًا لمفاتيحه (رمز الاتصال) وسلسلة نصية (اسم الدولة) لقيمه.
لديك 9 مهام تتعلق بالصنف static المسمّى DialingCodes.
نفّذ الطريقة (static) DialingCodes.GetEmptyDictionary() التي تُرجع قاموسًا فارغًا.
DialingCodes.GetEmptyDictionary();
// => empty dictionary
يوجد قاموس مُعبّأ مسبقًا يحتوي على رموز الاتصال الثلاثة التالية: "United States of America" ورمزها 1، و"Brazil" ورمزها 55، و"India" ورمزها 91. نفّذ الطريقة (static) DialingCodes.GetExistingDictionary() لتُرجع القاموس المُعبّأ مسبقًا:
DialingCodes.GetExistingDictionary();
// => 1 => "United States of America", 55 => "Brazil", 91 => "India"
نفّذ الطريقة (static) DialingCodes.AddCountryToEmptyDictionary() التي تُنشئ قاموسًا وتضيف إليه رمز اتصال واسم الدولة المرتبط به.
DialingCodes.AddCountryToEmptyDictionary(44, "United Kingdom");
// => 44 => "United Kingdom"
نفّذ الطريقة (static) DialingCodes.AddCountryToExistingDictionary() التي تضيف رمز اتصال واسم الدولة المرتبط به إلى قاموس غير فارغ.
DialingCodes.AddCountryToExistingDictionary(DialingCodes.GetExistingDictionary(),
44, "United Kingdom");
// => 1 => "United States of America", 44 => "United Kingdom", 55 => "Brazil", 91 => "India"
نفّذ الطريقة (static) DialingCodes.GetCountryNameFromDictionary() التي تأخذ رمز اتصال وتُرجع اسم الدولة المقابل له. إذا لم يكن رمز الاتصال موجودًا في القاموس، فستُرجع سلسلة نصية فارغة.
DialingCodes.GetCountryNameFromDictionary(
DialingCodes.GetExistingDictionary(), 55);
// => "Brazil"
DialingCodes.GetCountryNameFromDictionary(
DialingCodes.GetExistingDictionary(), 999);
// => string.Empty
نفّذ الطريقة (static) DialingCodes.CheckCodeExists() للتحقق مما إذا كان رمز الاتصال موجودًا في القاموس.
DialingCodes.CheckCodeExists(DialingCodes.GetExistingDictionary(), 55);
// => true
نفّذ الطريقة (static) DialingCodes.UpdateDictionary() التي تأخذ رمز اتصال وتستبدل اسم الدولة المقابل له في القاموس باسم الدولة الممرَّر كمعامل. إذا لم يكن رمز الاتصال موجودًا في القاموس، فإن القاموس يبقى دون تغيير.
DialingCodes.UpdateDictionary(
DialingCodes.GetExistingDictionary(), 1, "Les États-Unis");
// => 1 => "Les États-Unis", 55 => "Brazil", 91 => "India"
DialingCodes.UpdateDictionary(
DialingCodes.GetExistingDictionary(), 999, "Newlands");
// 1 => "United States of America", 55 => "Brazil", 91 => "India"
نفّذ الطريقة (static) DialingCodes.RemoveCountryFromDictionary() التي تأخذ رمز اتصال وتزيل السجل المقابل له، أي رمز الاتصال واسم الدولة، من القاموس.
DialingCodes.RemoveCountryFromDictionary(
DialingCodes.GetExistingDictionary(), 91);
// => 1 => "United States of America", 55 => "Brazil"
نفّذ الطريقة (static) DialingCodes.FindLongestCountryName() التي ستُرجع اسم الدولة ذات الاسم الأطول المخزّن في القاموس.
DialingCodes.FindLongestCountryName(
DialingCodes.GetExistingDictionary());
// => "United States of America"
سجّل في Exercism لتتعلّم وتتقن C# عبر 62 مفهومًا178 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.