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

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

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

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

Используя 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];
            }
        }
    }
}
Насколько я понимаю, то для foreach надо класс пронаследовать от интерфейсов IEnumerable, IEnumerator, IEnumerable<T>, IEnumerator<T>, IDisposable и ессно реализовать соответствующие методы и св-ва. Вот на этом и случился затык. Как хотя бы должны выглядеть оба метода GetEnumerator ? Заранее большое спасибо!

Решение задачи: «Приблизительная реализация 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();
}

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


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

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

14   голосов , оценка 4.286 из 5
Похожие ответы