它们是不同类型的对象,IEnumerable
是接口(不是实例本身,只是某些功能的模式),List
而是实际类。
使用其中一个有一种“优势”。
如果您正在编写一个想要更灵活的方法,并且只需要枚举对象,那么使用IEnumerable
.
List
implements IEnumerable
,并且可以被视为,就像Collection
,和许多其他类一样。
以此为例:
public void OutputEnumerable(IEnumerable<string> strings)
{
foreach (string s in strings)
Console.WriteLine(s);
}
public void OutputList(List<string> strings)
{
foreach (string s in strings)
Console.WriteLine(s);
}
然后你有这个数据:
List<string> stringList = new List<string>(new [] { "a", "b", "c" });
Collection<string> stringCol = new Collection<string>(new [] { "a", "b", "c" });
IEnumerable<string> stringEn = new [] { "a", "b", "c" };
这些都有效:
OutputEnumerable(stringList);
OutputEnumerable(stringCol);
OutputEnumerable(stringEn);
OutputList(stringList);
而这些不会:
OutputList(stringCol);
OutputList(stringEn);