Каждый ICollection
должен быть IEnumerable
(я думаю, и команда .NET Framework, похоже, согласна со мной ;-)), но обратный путь не всегда имеет смысл. В этом мире существует иерархия «объектов, подобных коллекциям», и ваше предположение, что перечислимым будет собрание, в которое можно добавлять элементы, не соответствует этой иерархии.
Пример: список имен основных цветов будет IEnumerable
, возвращая "Red"
, "Blue"
и "Green"
. Не было бы никакого логического смысла делать primaryColors.Add("Bright Purple")
для "коллекции", заполненной так:
...whatever...
{
...
var primaryColors = EnumeratePrimaryColors();
...
}
private static IEnumerable<string> EnumeratePrimaryColors() {
yield return "Red";
yield return "Blue";
yield return "Green";
}