Сегодня поговорим о том, как создать ассоциативный массив на языке программирования C#…
На самом деле понятия ассоциативный массив, в языке программирования си шарп нет. Данную роль в языке выполняют списки, а точнее построенный на списках тип данных Dictionary.
Dictionary<Tkey, Tvalue> array = new Dictionary<Tkey, Tvalue>();
Где Tkey — это тип данных для ключа, а Tvalue — тип данных для значения. Так как мы говорим об ассоциативных массивах, то в качестве типа ключа будет использоваться тип string. В качестве значения же, необходимо использовать необходимый в той или иной ситуации тип.
class SomeClass
{
int a;
int b;
public SomeClass()
{
Random r = new Random();
this.a = r.Next(1, 100);
this.b = r.Next(1, 100);
}
public override string ToString()
{
return String.Format("{0} + {1} = {2}", this.a, this.b, this.a + this.b);
}
}
...
...
...
Dictionary<string, SomeClass> array = new Dictionary<string, SomeClass>();
SomeClass — это класс, который при создании генерирует два случайных числа, а при вызове метода ToString, возвращает строку простого математического действия (сложение) для сгенерированных чисел.
Для добавления новых элементов в ассоциативный массив необходимо использовать метод Add.
array.Add("One", new SomeClass());
array.Add("Two", new SomeClass());
array.Add("Three", new SomeClass());
Работать же со словарем можно как с обычным массивом:
MessageBox.Show(array["One"].ToString()); //array["One"] - это экземпляр класса SomeClass
Или можно перебрать все элементы словаря вот так:
foreach (KeyValuePair<string, SomeClass> kvp in array)
//или кратко foreach (var kvp in array)
{
MessageBox.Show(kvp.Key + ": " + kvp.Value.ToString() );
}
Так же можно обращаться к элементам словаря, используя переменные:
string idx = "Two"; MessageBox.Show(array[idx].ToString());