Создание коллекции MyGenericList - C#
Формулировка задачи:
Добрий день!
Мне поставлена задача создать свою коллекцию(типо List), которая должна работать с любыми аргументами(Generic).
Для этого необходимо наследовать интерфейсы. В моем случае, я наследовал интерфейс ICollection<T>. Там нужно реализовать около десятка методов. Я сначало просто написал эти методы пустыми чтоб программа скомпилировалась, но возникла проблема с методами GetEnumerator. У меня он такой
Однако компилятор хочет еще один метод тоже GetEnumerator(). Я не понимаю что делать.
Также необходимы советы по реализации подобных методов, ибо я не очень понимаю как они работают.
public IEnumerator<T> 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();
}
}
}