我正在查看Microsoft的《集合指南》,但有些部分让我难以理解:
X 不要在公共API中使用 ArrayList
或 List<T>
。这是否意味着我应该完全避免返回 List<T>
,或者我可以将其作为 IEnumerable
/IList
返回,但不能显式地返回 List<T>
?
✓ 尽可能使用最不特定的类型作为参数类型。大多数接受集合作为参数的成员使用 IEnumerable<T>
接口。在看到ReSharper抱怨“可能对IEnumerable进行多个枚举”后,我认为当我期望预先计算的有限对象集合(而不是惰性流)时,使用ICollection<T>
更好。这不是事实吗?
✓ 对于表示读/写集合的属性或返回值,请使用 Collection<T>
或Collection<T>
的子类。为什么不使用ICollection<T>
?我认为接口比具体类更可取。