ArrayList
объявляет, что он реализует интерфейсы IList
, ICollection
и IEnumeralbe
.
Почему бы не реализовать только IList
, потому что IList
также выводится из ICollection
, а ICollection
- из IEnumerable
.
Какова цель такого заявления? В .NET BCL существует много таких случаев.