我知道IList是接口类型,而List是具体类型,但我仍然不知道何时应该使用它们中的哪一个。现在我做的是,如果我不需要Sort或FindAll方法,我就使用接口。我是对的吗?有没有更好的方法来决定何时使用接口或具体类型?
List
对象允许您创建列表、添加元素、删除元素、更新元素、索引等。当您只想要一个指定对象类型的通用列表时,可以使用 List
。IList
是一个接口。如果您想创建自己的自定义 List
,比如名为 BookList
的列表类,那么您可以使用该接口为您的新类提供基本方法和结构。当您想要创建实现 List 的特殊子类时,可以使用 IList
。IList
是一个接口,不能被实例化。而 List
是一个类,可以被实例化。这意味着:IList<string> list1 = new IList<string>(); // this is wrong, and won't compile
IList<string> list2 = new List<string>(); // this will compile
List<string> list3 = new List<string>(); // this will compile
void ProcessArrayData(IList almostAnyTypeOfArray)
{
// Do some stuff with the IList array
}
这将允许我在.NET框架中对几乎任何数组进行通用处理,除非它使用IEnumerable而不是IList,有时会发生这种情况。
实际上,这取决于您需要的功能类型。我建议在大多数情况下使用List类。当您需要创建一个可能具有一些非常特定规则的自定义数组,并且希望将其封装在集合中以避免重复,但仍希望.NET将其识别为列表时,最好使用IList。