Почему Iterator определяет операцию удаления ()?

В C #интерфейс IEnumerator определяет способ обхода коллекции и просмотра элементов. Я думаю, что это чрезвычайно полезно, потому что если вы передадите IEnumerableметоду, он не изменит исходный код.

Однако в Java Итератор определяет операцию удаления в (необязательно! )позволяют удалять элементы. Нет никакого преимущества в передаче Iterableметоду, потому что этот метод все еще может изменить исходную коллекцию.

remove's необязательность является примером отказа от завещания запаха, но без учета (уже обсуждавшегося здесь)Меня интересуют дизайнерские решения, которые привели к реализации события removeв интерфейсе.

Какие конструктивные решения привели к добавлению removeк Iterator?

Другими словами, что такое проектное решение C #, которое явно не имеет removeопределенного на IEnumerator?

12
задан Community 23 May 2017 в 11:55
поделиться