В С# интерфейс IEnumerator определяет способ перемещения коллекции и просмотра элементов. Я думаю, что это чрезвычайно полезно, потому что если вы передадите метод IEnumerable<T>
методу, он не будет изменять исходный источник.
Однако в Java Iterator определяет remove (необязательно!) позволяет удалять элементы. Нет никакого преимущества при передаче Iterable<T>
методу, потому что этот метод все еще может изменять исходную коллекцию.
remove
необязательность является примером отказался от завещания, но игнорируя это (уже обсуждалось здесь) Меня бы интересовали дизайнерские решения, в которых было предложено событие remove
, которое должно быть реализовано на интерфейсе.
Каковы конструктивные решения, которые привели к добавлению remove
к Iterator
?
Иными словами, что такое конструкторское решение С#, которое явно не имеет remove
, определенного на IEnumerator
?