Приблизительная реализация Dictionary - C#

Узнай цену своей работы

Формулировка задачи:

Приветствую! Необходима помощь просветлённых в следующей задаче -

Используя Visual Studio 2010, создайте проект по шаблону Console Application. Создайте коллекцию MyDictionary<TKey,TValue>. Реализуйте в простейшем приближении возможность использования ее экземпляра аналогично экземпляру класса Dictionary<TKey,TValue>. Минимально требуемый интерфейс взаимодействия с экземпляром, должен включать метод добавления элемента, индексатор для получения значения элемента по указанному индексу и свойство только для чтения для получения общего количества элементов. Реализуйте возможность перебора элементов коллекции в цикле foreach.

До момента реализации foreach вроде всё сделал
Листинг программы
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. namespace ch15ex3
  5. {
  6. class MyDictionary<Tkey, Tval>
  7. {
  8. private int counter = 0;
  9. private Tkey[] keysArray = null;
  10. private Tval[] valsArray = null;
  11. public int Counter
  12. {
  13. get { return this.counter; }
  14. }
  15. public void Add(Tkey key, Tval val)
  16. {
  17. this.counter++;
  18. Array.Resize(ref keysArray, counter);
  19. keysArray[counter - 1] = key;
  20. Array.Resize(ref valsArray, counter);
  21. valsArray[counter - 1] = val;
  22. }
  23. public Tval this[Tkey key]
  24. {
  25. get
  26. {
  27. int ind = 0;
  28. for(int i = 0; i < keysArray.Length; i++)
  29. {
  30. if (key.Equals(keysArray[i]))
  31. ind = i;
  32. }
  33. return valsArray[ind];
  34. }
  35. }
  36. }
  37. }
Насколько я понимаю, то для foreach надо класс пронаследовать от интерфейсов IEnumerable, IEnumerator, IEnumerable<T>, IEnumerator<T>, IDisposable и ессно реализовать соответствующие методы и св-ва. Вот на этом и случился затык. Как хотя бы должны выглядеть оба метода GetEnumerator ? Заранее большое спасибо!

Решение задачи: «Приблизительная реализация Dictionary»

textual
Листинг программы
  1. public IEnumerator<KeyValuePair<TKey, TValue>> GetEnumerator()
  2. {
  3.    for (int i = 0; i < keysArray.Length; i++)
  4.       yield return new KeyValuePair<TKey, TValue>(keysArray[i], valsArray[i]);
  5. }
  6.  
  7. IEnumerator IEnumerable.GetEnumerator()
  8. {
  9.    return GetEnumerator();
  10. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.286 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы