Приблизительная реализация 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(); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д