IEnumerable 是一个接口,用于表示一个泛型集合。它定义了一个用于遍历集合的方法。通过实现 IEnumerable 接口,可以让集合类具有迭代的能力,使得可以通过 foreach 循环对集合进行遍历操作。
在 C# 中,IEnumerable 接口的使用非常常见。使用它的好处是可以通过简单的 foreach 循环来遍历集合,而不需要关心集合的内部实现细节。这样可以提高代码的可读性,并且使得代码更加灵活和可扩展。
此外,IEnumerable 还可以与 LINQ 查询语法
如果您计划构建一个公共API,最好使用IEnumerable而不是List
这是一个关于何时使用IEnumerable、ICollection、List
IEnumerable
IEnumerable
另一方面,List
因此,如果您希望提供一个更通用的API,可以考虑使用IEnumerable
总之,使用IEnumerable
IEnumerable
相反地,如果使用具体的类型作为参数类型,比如List
当然,如果一个方法确实需要一个列表作为参数(而不是任意的可枚举对象),那么应该使用更强的类型,比如IList
在方法的返回类型方面,通常最好使用最强的类型(尽量不要限制特定的类型)。例如,对于一个返回集合的方法,可以使用IEnumerable
需要注意的是,数组只部分实现了IList
有人提出了使用协变数组的想法,即通过定义一个IArray
总之,IEnumerable
IEnumerable
另一方面,List
通过在API中使用IEnumerable
我非常支持您关于与实现解耦的观点,但我也认为清楚地说明预期的使用方式是有意义的。即使我有一个List
我同意,不过在这种情况下,我建议使用IList
好观点,尽管这带出了一个完全不同的问题,即“接口与具体实例”,我认为这是一个不同的问题。