Создание коллекции MyGenericList - C#

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

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

Добрий день! Мне поставлена задача создать свою коллекцию(типо List), которая должна работать с любыми аргументами(Generic). Для этого необходимо наследовать интерфейсы. В моем случае, я наследовал интерфейс ICollection<T>. Там нужно реализовать около десятка методов. Я сначало просто написал эти методы пустыми чтоб программа скомпилировалась, но возникла проблема с методами GetEnumerator. У меня он такой
        public IEnumerator<T> GetEnumerator()
        {
 
        }
Однако компилятор хочет еще один метод тоже GetEnumerator(). Я не понимаю что делать. Также необходимы советы по реализации подобных методов, ибо я не очень понимаю как они работают.

Решение задачи: «Создание коллекции MyGenericList»

textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace CollectionTest
{
    class Program
    {
        static void Main(string[] args)
        {
            MycCollection<CollectionItem> myCollection = new MycCollection<CollectionItem>();
            myCollection.Add(new CollectionItem { ID = 1, Name = "One" });
            myCollection.Add(new CollectionItem { ID = 2, Name = "Two" });
            myCollection.Add(new CollectionItem { ID = 3, Name = "Three" });
 
            foreach (CollectionItem item in myCollection)
            {
                Console.WriteLine(item);
            }
 
            myCollection.RemoveAt(2);
            Console.WriteLine();
 
            foreach (CollectionItem item in myCollection)
            {
                Console.WriteLine(item);
            }
            Console.ReadLine();
        }
    }
    //Класс-элемент коллекции
    public class CollectionItem
    {
        public int ID { get; set; }
        public string Name { get; set; }
        public override string ToString()
        {
            return string.Format("ID: {0}, Name: {1}", ID, Name);
        }
    }
    //Класс обобщенной коллекции
    public class MycCollection<T> : IEnumerable<T>
    {
        private List<T> innerList;
        public MycCollection()
        {
            innerList = new List<T>();
        }
 
        public void Add(T arg)
        {
            innerList.Add(arg);
        }
        public void RemoveAt(int index)
        {
            if (innerList.Count <= index)
                throw new IndexOutOfRangeException("Error!");
            else
                innerList.RemoveAt(index);
        }
        public IEnumerator<T> GetEnumerator()
        {
            return innerList.GetEnumerator();
        }
 
        System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
        {
            return innerList.GetEnumerator();
        }
    }
}

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


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

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

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