A szótár olyan elemek gyűjteménye, amelyben minden elem egy kulcsból és egy értékből áll, úgy, hogy ha egy kulcsot átadunk a szótár valamelyik metódusának, akkor a hozzá tartozó értéket adja vissza. Ugyanaz a szerepe, mint más nyelvekben a map-eknek vagy az asszociatív tömböknek.
A szótár a következőképpen hozható létre:
new Dictionary<int, string>();
// Empty dictionary
Vagy
new Dictionary<int, string>
{
[1] = "One",
[2] = "Two"
};
// Or
new Dictionary<int, string>
{
{1, "One"},
{2, "Two"}
};
// 1 => "One", 2 => "Two"
Figyeld meg, hogy a kulcs- és értéktípusok a szótár definíciójának részét képezik.
Létrehozás után a szótár bejegyzéseit hozzáadhatod vagy eltávolíthatod a beépített Add és Remove metódusaival.
A szótárban lévő értékek lekérése vagy frissítése úgy történik, hogy a szótárt egy kulccsal indexeljük:
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"
A következővel tesztelheted, hogy létezik-e egy kulcs a szótárban:
var dict = new Dictionary<string, string>{/*...*/};
dict.ContainsKey("some key that exists");
// => true
A szótár bejárása a kulcs/érték párjain megy végig. A szótáraknak vannak olyan tulajdonságaik is, amelyekkel a kulcsain vagy az értékein is végigmehetsz.
Ebben a feladatban olyan kódot írsz, amely egy nemzetközi hívószám-szótár segítségével tartja nyilván a nemzetközi hívószámokat.
A szótár kulcsai egész számok (a hívószám), az értékei pedig stringek (az ország neve).
9 részfeladat vár rád, amelyek a DialingCodes statikus osztályhoz kapcsolódnak.
Valósítsd meg a (statikus) DialingCodes.GetEmptyDictionary() metódust, amely egy üres szótárat ad vissza.
DialingCodes.GetEmptyDictionary();
// => empty dictionary
Létezik egy előre feltöltött szótár, amely a következő 3 hívószámot tartalmazza: „United States of America”, amelynek a hívószáma 1, „Brazil”, amelynek a hívószáma 55, és „India”, amelynek a hívószáma 91. Valósítsd meg a (statikus) DialingCodes.GetExistingDictionary() metódust, amely visszaadja az előre feltöltött szótárat:
DialingCodes.GetExistingDictionary();
// => 1 => "United States of America", 55 => "Brazil", 91 => "India"
Valósítsd meg a (statikus) DialingCodes.AddCountryToEmptyDictionary() metódust, amely létrehoz egy szótárat, és hozzáad egy hívószámot meg a hozzá tartozó országnevet.
DialingCodes.AddCountryToEmptyDictionary(44, "United Kingdom");
// => 44 => "United Kingdom"
Valósítsd meg a (statikus) DialingCodes.AddCountryToExistingDictionary() metódust, amely hozzáad egy hívószámot és a hozzá tartozó országnevet egy nem üres szótárhoz.
DialingCodes.AddCountryToExistingDictionary(DialingCodes.GetExistingDictionary(),
44, "United Kingdom");
// => 1 => "United States of America", 44 => "United Kingdom", 55 => "Brazil", 91 => "India"
Valósítsd meg a (statikus) DialingCodes.GetCountryNameFromDictionary() metódust, amely egy hívószámot kap, és visszaadja a hozzá tartozó országnevet. Ha a hívószám nem szerepel a szótárban, akkor üres stringet ad vissza.
DialingCodes.GetCountryNameFromDictionary(
DialingCodes.GetExistingDictionary(), 55);
// => "Brazil"
DialingCodes.GetCountryNameFromDictionary(
DialingCodes.GetExistingDictionary(), 999);
// => string.Empty
Valósítsd meg a (statikus) DialingCodes.CheckCodeExists() metódust, amely ellenőrzi, hogy egy hívószám szerepel-e a szótárban.
DialingCodes.CheckCodeExists(DialingCodes.GetExistingDictionary(), 55);
// => true
Valósítsd meg a (statikus) DialingCodes.UpdateDictionary() metódust, amely egy hívószámot kap, és a szótárban a hozzá tartozó országnevet lecseréli a paraméterként átadott országnévre. Ha a hívószám nem szerepel a szótárban, akkor a szótár változatlan marad.
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"
Valósítsd meg a (statikus) DialingCodes.RemoveCountryFromDictionary() metódust, amely egy hívószámot kap, és eltávolítja a szótárból a hozzá tartozó bejegyzést (hívószám + országnév).
DialingCodes.RemoveCountryFromDictionary(
DialingCodes.GetExistingDictionary(), 91);
// => 1 => "United States of America", 55 => "Brazil"
Valósítsd meg a (statikus) DialingCodes.FindLongestCountryName() metódust, amely visszaadja a szótárban tárolt leghosszabb nevű ország nevét.
DialingCodes.FindLongestCountryName(
DialingCodes.GetExistingDictionary());
// => "United States of America"
Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) C# nyelvet 62 fogalom178 feladat segítségével, valódi emberi mentorálással, mindez ingyen.