Próbuję napisać własną (prostą) implementację List. To, co zrobiłem do tej pory:Problemy implementujące IEnumerable <T>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace provaIEnum
{
class MyList<T> : IEnumerable<T>
{
private T[] _array;
public int Count { get; private set; }
public MyList() { /* ... */ }
public void Add(T element) { /* ... */ }
// ...
public IEnumerator<T> GetEnumerator()
{
for (int i = 0; i < Count; i++)
yield return _array[i];
}
}
Dostaję błąd o GetEnumerator jednak:
„provaIEnum.Lista” nie wprowadzania elementu interfejsu „System.Collections.IEnumerable.GetEnumerator() ". 'provaIEnum.Lista.GetEnumerator()' nie może zaimplementować 'System.Collections.IEnumerable.GetEnumerator()', ponieważ nie ma ona zgodnego typu zwrotu "System.Collections.IEnumerator".
Nie jestem pewien, czy rozumiem, co VS próbuje mi powiedzieć i nie mam pojęcia, jak to naprawić.
Dzięki za poświęcony czas
Pamiętaj, że nie powinieneś pisać swojego modułu wyliczającego, ponieważ obecnie możesz modyfikować swoją wewnętrzną tablicę w 'foreach' (wywołanie' Add' w foreach nie spowoduje wyjątku). [Zobacz] (http://stackoverflow.com/questions/24142614/when- mógłby-i-separately-implement-ienumeratort) – nawfal
@Nawfal dobry punkt, błędy zawsze nas obserwują;) – BlackBear