一尘不染

何时使用IList和何时使用List

c#

我知道IList是接口,而List是具体类型,但是我仍然不知道何时使用每个接口。我现在正在做的是,如果我不需要使用接口的Sort或FindAll方法。我对吗?是否有更好的方法来决定何时使用接口或具体类型?


阅读 422

收藏
2020-05-19

共1个答案

一尘不染

我遵循两个规则:

  • 接受将起作用的最基本的类型
  • 返回用户需要的最丰富的类型

因此,在编写带有集合的函数或方法时,不要将其写入列表,而要写入IList ,ICollection 或IEnumerable
。即使System.Object也可以是T,所以通用接口即使对于异构列表也仍然可以使用。如果您决定在以后使用堆栈或其他数据结构,这样做将使您免于头痛。如果您只需要遍历该函数,则IEnumerable
实际上就是您所需要的。

另一方面,当从函数中返回对象时,您希望为用户提供尽可能丰富的操作集,而不必进行操作。因此,在这种情况下,如果内部是List ,则将副本作为List
返回。

2020-05-19