辞書は要素の集まりで、各要素はキーと値で構成されています。辞書のメソッドにキーを渡すと、それに対応する値が返されます。他のプログラミング言語におけるマップや連想配列と同じ役割を果たします。
辞書は次のようにして作成できます:
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
辞書を列挙すると、そのキーと値のペアが列挙されます。辞書には、キーまたは値だけを列挙できるプロパティもあります。
この演習では、国際ダイヤルコードの辞書を使って、国際ダイヤルコードを管理するコードを書きます。
この辞書では、キーに整数(ダイヤルコード)、値に文字列(国名)を使います。
DialingCodes静的クラスを扱う9つのタスクがあります。
空の辞書を返す(静的)メソッド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"