Зачем в C# ICollection повторно наследует интерфейс IEnumerable?

Всем привет!
В C# есть коллекция ICollection(T), которая объявлена следующим образом:
public interface ICollection<T> : IEnumerable<T>, IEnumerable
{
    int Count { get; }
    bool IsReadOnly { get; }
    void Add(T item);
    void Clear();
    bool Contains(T item);
    void CopyTo(T[] array, int arrayIndex);
    bool Remove(T item);
}

Данная коллекция наследует два интерфейса IEnumerable(T) и IEnumerable. Вопрос зачем повторно наследуется интерфейс IEnumerable, если IEnumerable(T) уже наследует данный интерфейс?
public interface IEnumerable<out T> : IEnumerable
{
    IEnumerator<T> GetEnumerator();
}

Я конечно понимаю что так можно делать и что тут ничего страшного нету. Но зачем? Может я чего-то не понимаю?
  • Вопрос задан
  • 393 просмотра
Пригласить эксперта
Ответы на вопрос 2
vabka
@vabka Куратор тега .NET
Токсичный шарпист
Это нужно для обратной совместимости. Ничего страшного в этом нет.
И таки да - поведение не поменяется, если убрать прямое наследование IEnumerable
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы