如果调用代码只在集合上迭代,是否有理由将内部集合公开为 ReadOnlyCollection 而不是 IEnumable?
class Bar
{
private ICollection<Foo> foos;
// Which one is to be preferred?
public IEnumerable<Foo> Foos { ... }
public ReadOnlyCollection<Foo> Foos { ... }
}
// Calling code:
foreach (var f in bar.Foos)
DoSomething(f);
如我所见,IEnumable 是 ReadOnlyCollection 接口的子集,它不允许用户修改集合。因此,如果 IEnumberable 接口足够了,那么它就是要使用的接口。这样说合适吗,还是我漏掉了什么?
谢谢/艾瑞克