Данная статья является дополнением к статье о типе Dictionary.
Все мы точно знаем, как пробежаться по элементам массива, списка, или обобщенного списка (string[] myList, ArrayList myList, List<string> myList):
foreach(string s in myList)
Console.WriteLine(s);
Но что делать в случае Dictionary?
Обычным типом не ограничиться, тем более, что данный класс представляет из себя не просто набор значений, а целый список пар ключ/значение. И тут уж не понятно, выполнять цикл следует по ключу, или его значению.
Для таких целей существует тип KeyValuePair, который инкапсулирует в себе определение как для ключа, так и для его значения. Поэтому для перебора всех парных элементов словаря Dictionary следует использовать именно класс KeyValuePair:
public Form1()
{
InitializeComponent();
Dictionary<int, string> myList =
new Dictionary<int, string>();
myList.Add(2, "Sasha");
myList.Add(7, "Petia");
myList.Add(6, "Ania");
myList.Add(8, "Dasha");
myList.Add(4, "Veronica");
ShowIterator<int, string>(myList);
}
void ShowIterator<K, V>(Dictionary<K, V> myList)
{
if (myList == null)
return;
string s = "";
foreach (KeyValuePair<K, V> kvp in myList)
s += string.Format("Key = {0}, Value = {1}",
kvp.Key, kvp.Value) + Environment.NewLine;
MessageBox.Show(s);
}
В конструкторе Form1 создается словарь и заполняется парами ключ/значение. Далее вызывается метод ShowIterator, в котором, используя тип KeyValuePair выполняется проход по всем элементам словаря. Данный метод является обобщенным, что дает возможность работать с любыми типами ключей и значений словаря.