Сегодня поговорим о том, как создать ассоциативный массив на языке программирования 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());