【发布时间】:2012-07-23 19:19:52
【问题描述】:
在 C# 中,IEnumerator 接口定义了一种遍历集合并查看元素的方法。我认为这非常有用,因为如果您将 IEnumerable<T> 传递给一个方法,它不会修改原始源代码。
但是,在 Java 中,Iterator 定义了 remove 操作以(可选!)允许删除元素。将Iterable<T> 传递给方法没有任何好处,因为该方法仍然可以修改原始集合。
remove 的 可选性 是 refused bequest 气味的一个示例,但忽略这一点(已经讨论过 here)我会对提示 @987654329 的设计决策感兴趣接口上要实现的@事件。
导致remove 被添加到Iterator 的设计决策是什么?
换句话说,在IEnumerator 上明确没有定义remove 的C# 设计决策是什么?
【问题讨论】:
标签: c# java iterator ienumerator