在 C# 中,IEnumerator接口定义了一种遍历集合并查看元素的方法。我认为这非常有用,因为如果您传递IEnumerable<T>
给一个方法,它不会修改原始源代码。
但是,在 Java 中,Iterator将删除操作定义为(可选!)允许删除元素。Iterable<T>
传递给方法没有任何优势,因为该方法仍然可以修改原始集合。
remove
的可选性是拒绝遗赠气味的一个例子,但忽略这一点(已经在这里讨论过)我会对促使remove
事件在接口上实现的设计决策感兴趣。
导致remove
被添加到的设计决策是Iterator
什么?
换句话说,明确没有remove
定义的 C# 设计决策是IEnumerator
什么?