Класс List<T>
реализует интерфейс IEnumerable<T>
. У него есть метод GetEnumerator
, который возвращает List<T>.Enumerator
.
У меня есть класс, как показано ниже, который дает ошибку компиляции, говорящую, что возвращаемый тип GetEnumerator
не соответствует интерфейсу.
public class InsertionSortedSet<T> : IEnumerable<T>
{
public struct Enumerator : IEnumerator<T>
{
// Required interface implemented
}
// Other interface methods implemented
public Enumerator GetEnumerator()
{
return new Enumerator(this);
}
}
«Entities.Helpers.InsertionSortedSet» не реализует член интерфейса «System.Collections.Generic.IEnumerable.GetEnumerator()». «Entities.Helpers.InsertionSortedSet.GetEnumerator()» не может реализовать «System.Collections.Generic.IEnumerable.GetEnumerator()», поскольку у него нет соответствующего возвращаемого типа «System.Collections.Generic.IEnumerator».
Учитывая, что List<T>
, кажется, возвращает свой собственный класс Enumerator
(а не интерфейс), и все же он реализует интерфейс Enumeration<T>
, я запутался, так как не вижу, что у меня отличается от этого класса.
Что не так с моей настройкой, из-за которой она не работает, где работает List<T>
?
Я хочу вернуть InsertionSortedSet<T>.Enumerator
, а не интерфейс, поскольку он позволяет избежать упаковки, которую мне нужно вырезать.