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