Приблизительная реализация Dictionary - C#
Формулировка задачи:
Приветствую!
Необходима помощь просветлённых в следующей задаче -
Насколько я понимаю, то для foreach надо класс пронаследовать от интерфейсов IEnumerable, IEnumerator, IEnumerable<T>, IEnumerator<T>, IDisposable и ессно реализовать соответствующие методы и св-ва.
Вот на этом и случился затык. Как хотя бы должны выглядеть оба метода GetEnumerator ?
Заранее большое спасибо!
Используя Visual Studio 2010, создайте проект по шаблону Console Application. Создайте коллекцию MyDictionary<TKey,TValue>. Реализуйте в простейшем приближении возможность использования ее экземпляра аналогично экземпляру класса Dictionary<TKey,TValue>. Минимально требуемый интерфейс взаимодействия с экземпляром, должен включать метод добавления элемента, индексатор для получения значения элемента по указанному индексу и свойство только для чтения для получения общего количества элементов. Реализуйте возможность перебора элементов коллекции в цикле foreach.
До момента реализации foreach вроде всё сделал
Листинг программы
- using System;
- using System.Collections;
- using System.Collections.Generic;
- namespace ch15ex3
- {
- class MyDictionary<Tkey, Tval>
- {
- private int counter = 0;
- private Tkey[] keysArray = null;
- private Tval[] valsArray = null;
- public int Counter
- {
- get { return this.counter; }
- }
- public void Add(Tkey key, Tval val)
- {
- this.counter++;
- Array.Resize(ref keysArray, counter);
- keysArray[counter - 1] = key;
- Array.Resize(ref valsArray, counter);
- valsArray[counter - 1] = val;
- }
- public Tval this[Tkey key]
- {
- get
- {
- int ind = 0;
- for(int i = 0; i < keysArray.Length; i++)
- {
- if (key.Equals(keysArray[i]))
- ind = i;
- }
- return valsArray[ind];
- }
- }
- }
- }
Решение задачи: «Приблизительная реализация Dictionary»
textual
Листинг программы
- public IEnumerator<KeyValuePair<TKey, TValue>> GetEnumerator()
- {
- for (int i = 0; i < keysArray.Length; i++)
- yield return new KeyValuePair<TKey, TValue>(keysArray[i], valsArray[i]);
- }
- IEnumerator IEnumerable.GetEnumerator()
- {
- return GetEnumerator();
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д