我找到了 Google C# 风格指南和这些要点
对于输入,请尽可能使用最严格的集合类型,例如 IReadOnlyCollection / IReadOnlyList / IEnumerable 当输入应该是不可变的时作为方法的输入。
对于输出,如果将返回容器的所有权传递给所有者,则首选 IList 而不是 IEnumerable。如果不转让所有权,请选择最严格的选项。
关于我无法理解的收藏。
a) 他们对最严格的收集意味着什么?我想它们暗示接口的继承如下:
IReadOnlyList<T>
inheritsIReadOnlyCollection<T>
which inheritsIEnumerable<T>
。那么IEnumerable
是最严格的吗?b) 最重要的是为什么这很重要?在任何时候任何人都可以将上述集合转换为
List<T>
并更改内容 - 我认为没有理由选择“最严格的选项”他们是否只需要返回接口?这是否意味着我必须始终投向
List<T>
-IEnumerable<T>
这不是误导或打击表现吗?他们提到转让所有权。我什么时候想转让所有权,什么时候不想转让?如果我这样做为什么