Un dizionario è una collezione di elementi in cui ogni elemento comprende una chiave e un valore, così che se si passa una chiave a un metodo del dizionario, viene restituito il valore associato. Ha lo stesso ruolo che hanno le mappe o gli array associativi in altri linguaggi.
Un dizionario può essere creato come segue:
new Dictionary<int, string>();
// Empty dictionary
Oppure
new Dictionary<int, string>
{
[1] = "One",
[2] = "Two"
};
// Or
new Dictionary<int, string>
{
{1, "One"},
{2, "Two"}
};
// 1 => "One", 2 => "Two"
Nota che i tipi delle chiavi e dei valori fanno parte della definizione del dizionario.
Una volta costruito, è possibile aggiungere o rimuovere voci da un dizionario usando i metodi predefiniti Add e Remove.
Per recuperare o aggiornare i valori in un dizionario, si usa l'indicizzazione tramite una chiave:
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"
Puoi verificare se un valore esiste nel dizionario con:
var dict = new Dictionary<string, string>{/*...*/};
dict.ContainsKey("some key that exists");
// => true
Quando si enumera un dizionario, si enumerano le sue coppie chiave/valore. I dizionari hanno anche proprietà che permettono di enumerare le chiavi o i valori.
In questo esercizio scriverai del codice per tenere traccia dei prefissi telefonici internazionali tramite un dizionario dei prefissi telefonici internazionali.
Il dizionario usa un numero intero per le chiavi (il prefisso telefonico) e una stringa (il nome del paese) per i valori.
Ci sono 9 attività che coinvolgono la classe statica DialingCodes.
Implementa il metodo (statico) DialingCodes.GetEmptyDictionary() che restituisce un dizionario vuoto.
DialingCodes.GetEmptyDictionary();
// => empty dictionary
Esiste un dizionario pre-popolato che contiene i seguenti 3 prefissi telefonici: "United States of America", che ha il prefisso 1, "Brazil", che ha il prefisso 55, e "India", che ha il prefisso 91. Implementa il metodo (statico) DialingCodes.GetExistingDictionary() in modo che restituisca il dizionario pre-popolato:
DialingCodes.GetExistingDictionary();
// => 1 => "United States of America", 55 => "Brazil", 91 => "India"
Implementa il metodo (statico) DialingCodes.AddCountryToEmptyDictionary() che crea un dizionario e vi aggiunge un prefisso telefonico e il nome del paese associato.
DialingCodes.AddCountryToEmptyDictionary(44, "United Kingdom");
// => 44 => "United Kingdom"
Implementa il metodo (statico) DialingCodes.AddCountryToExistingDictionary() che aggiunge un prefisso telefonico e il nome del paese associato a un dizionario non vuoto.
DialingCodes.AddCountryToExistingDictionary(DialingCodes.GetExistingDictionary(),
44, "United Kingdom");
// => 1 => "United States of America", 44 => "United Kingdom", 55 => "Brazil", 91 => "India"
Implementa il metodo (statico) DialingCodes.GetCountryNameFromDictionary() che prende un prefisso telefonico e restituisce il nome del paese corrispondente. Se il prefisso telefonico non è contenuto nel dizionario, viene restituita una stringa vuota.
DialingCodes.GetCountryNameFromDictionary(
DialingCodes.GetExistingDictionary(), 55);
// => "Brazil"
DialingCodes.GetCountryNameFromDictionary(
DialingCodes.GetExistingDictionary(), 999);
// => string.Empty
Implementa il metodo (statico) DialingCodes.CheckCodeExists() per verificare se un prefisso telefonico esiste nel dizionario.
DialingCodes.CheckCodeExists(DialingCodes.GetExistingDictionary(), 55);
// => true
Implementa il metodo (statico) DialingCodes.UpdateDictionary() che prende un prefisso telefonico e sostituisce il nome del paese corrispondente nel dizionario con il nome del paese passato come parametro. Se il prefisso telefonico non esiste nel dizionario, il dizionario rimane invariato.
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"
Implementa il metodo (statico) DialingCodes.RemoveCountryFromDictionary() che prende un prefisso telefonico e rimuove dal dizionario la voce corrispondente, prefisso telefonico + nome del paese.
DialingCodes.RemoveCountryFromDictionary(
DialingCodes.GetExistingDictionary(), 91);
// => 1 => "United States of America", 55 => "Brazil"
Implementa il metodo (statico) DialingCodes.FindLongestCountryName() che restituisce il nome del paese con il nome più lungo memorizzato nel dizionario.
DialingCodes.FindLongestCountryName(
DialingCodes.GetExistingDictionary());
// => "United States of America"
Iscriviti a Exercism per imparare e padroneggiare C# con 62 concetti178 esercizi e il mentoring di persone reali, tutto gratis.