何时使用 IList 或 List
本文关键字:List IList 何时使 | 更新日期: 2023-09-27 18:37:24
我看到了一个像这样的函数
public FuncA(string param1, IList<SqlParameter> sqlParamsList)
我想知道为什么作者使用 IList 而不是列表?哪一个更好?我知道它们之间的区别在于一个是接口,另一个是类。所以我的最后一个问题是什么时候使用哪个?
多个
类可以实现IList
接口。如果使用IList
则接受实现IList
的任何类。
如果使用 List
,则只能传递List
类和派生类。
通常最好使用接口,因为它使 API 对调用方更灵活。如果你的方法接受接口而不是具体的实现,调用者可以使用他们想要的任何类型(List
、Array
、ImmutableList
...),只要它实现IList
。
使用接口优先于具体类型,以便允许调用方传入实现接口的任何对象。
特别是在公共方法中,这是很好的做法。
我倾向于在具体实现中使用IList
接口参数,除非有某种原因你绝对必须拥有具体的List
参数。
通过使用IList
而不是List
,您的方法现在可以接受实现IList
的所有集合类型,这些集合类型可能是也可能不是直接从List
继承的集合。 List
及其任何子类也实现IList
,因此它们也将包含在方法可以使用的可用类型集中。 在这种情况下使用IList
可以让您更加灵活。
此外,在单元测试方案中,IList
可能更容易模拟,具体取决于您尝试测试的内容以及模拟框架具有哪些功能。