Словник - це колекція елементів, де кожен елемент складається з ключа та значення, так що якщо ключ передати методу словника, повертається повʼязане з ним значення. Він відіграє ту саму роль, що й мапи чи асоціативні масиви в інших мовах.
Словник можна створити так:
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
Перебирання словника перебирає його пари ключ-значення. Словники також мають властивості, які дозволяють перебирати їхні ключі чи значення.
У цій вправі ми будемо писати код, щоб відстежувати міжнародні коди набору за допомогою словника міжнародних кодів набору.
У цьому словнику ключами є цілі числа (код набору), а значеннями - рядки тексту (англ. string) (назва країни).
На нас чекає 9 завдань, повʼязаних зі статичним класом DialingCodes.
Реалізуйте (статичний) метод DialingCodes.GetEmptyDictionary(), який повертає порожній словник.
DialingCodes.GetEmptyDictionary();
// => empty dictionary
Існує наперед заповнений словник, який містить такі 3 коди набору: «United States of America» з кодом 1, «Brazil» з кодом 55 та «India» з кодом 91. Реалізуйте (статичний) метод DialingCodes.GetExistingDictionary(), який повертає наперед заповнений словник:
DialingCodes.GetExistingDictionary();
// => 1 => "United States of America", 55 => "Brazil", 91 => "India"
Реалізуйте (статичний) метод DialingCodes.AddCountryToEmptyDictionary(), який створює словник і додає до нього код набору та відповідну назву країни.
DialingCodes.AddCountryToEmptyDictionary(44, "United Kingdom");
// => 44 => "United Kingdom"
Реалізуйте (статичний) метод DialingCodes.AddCountryToExistingDictionary(), який додає код набору та відповідну назву країни до непорожнього словника.
DialingCodes.AddCountryToExistingDictionary(DialingCodes.GetExistingDictionary(),
44, "United Kingdom");
// => 1 => "United States of America", 44 => "United Kingdom", 55 => "Brazil", 91 => "India"
Реалізуйте (статичний) метод DialingCodes.GetCountryNameFromDictionary(), який приймає код набору та повертає відповідну назву країни. Якщо коду набору немає у словнику, то повертається порожній рядок.
DialingCodes.GetCountryNameFromDictionary(
DialingCodes.GetExistingDictionary(), 55);
// => "Brazil"
DialingCodes.GetCountryNameFromDictionary(
DialingCodes.GetExistingDictionary(), 999);
// => string.Empty
Реалізуйте (статичний) метод DialingCodes.CheckCodeExists(), щоб перевірити, чи існує код набору у словнику.
DialingCodes.CheckCodeExists(DialingCodes.GetExistingDictionary(), 55);
// => true
Реалізуйте (статичний) метод 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"
Реалізуйте (статичний) метод DialingCodes.RemoveCountryFromDictionary(), який приймає код набору та видаляє відповідний запис, код набору + назву країни, зі словника.
DialingCodes.RemoveCountryFromDictionary(
DialingCodes.GetExistingDictionary(), 91);
// => 1 => "United States of America", 55 => "Brazil"
Реалізуйте (статичний) метод DialingCodes.FindLongestCountryName(), який повертає назву країни з найдовшою назвою з тих, що зберігаються у словнику.
DialingCodes.FindLongestCountryName(
DialingCodes.GetExistingDictionary());
// => "United States of America"
Зареєструйтеся на Exercism, щоб вивчати й опановувати C#, а також 62 концепції178 вправ та справжнє наставництво від людей, і все це безкоштовно.