小编典典

何时使用 IList 以及何时使用 List

all

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


阅读 92

收藏
2022-06-30

共1个答案

小编典典

我遵循两条规则:

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

因此,在编写采用集合的函数或方法时,不要将其编写为采用 List,而是采用 IList、ICollection
IEnumerable。即使对于异构列表,通用接口仍然有效,因为 System.Object 也可以是
T。如果您决定使用堆栈或其他一些数据结构,那么这样做会让您头疼。如果您在函数中需要做的只是通过它进行 foreach,那么 IEnumerable
确实是您应该要求的。

另一方面,当从函数中返回对象时,您希望为用户提供尽可能丰富的操作集,而无需他们进行强制转换。所以在这种情况下,如果它在内部是一个
List,则返回一个作为 List 的副本。

2022-06-30