我知道 IList 是接口, List 是具体类型,但我仍然不知道何时使用每一个。我现在正在做的是,如果我不需要使用该接口的 Sort 或 FindAll 方法。我对吗?有没有更好的方法来决定何时使用接口或具体类型?
我遵循两条规则:
因此,在编写采用集合的函数或方法时,不要将其编写为采用 List,而是采用 IList、ICollection 或 IEnumerable。即使对于异构列表,通用接口仍然有效,因为 System.Object 也可以是 T。如果您决定使用堆栈或其他一些数据结构,那么这样做会让您头疼。如果您在函数中需要做的只是通过它进行 foreach,那么 IEnumerable 确实是您应该要求的。
另一方面,当从函数中返回对象时,您希望为用户提供尽可能丰富的操作集,而无需他们进行强制转换。所以在这种情况下,如果它在内部是一个 List,则返回一个作为 List 的副本。