这两个人似乎正在做同样的事情。我给它们计时了——知道这只是一个小例子——但它们似乎也以完全相同的速度运行。使用其中一种比另一种有好处吗?
List<string> alpha = new List<string>(new string[] { "a", "b", "c" });
foreach (var letter in alpha)
{
Console.WriteLine(letter);
}
IEnumerable<string> _alpha = new[] {"a", "b", "c"};
foreach(var _letter in _alpha)
{
Console.WriteLine(_letter);
}
Run Code Online (Sandbox Code Playgroud)
它们是不同类型的对象,IEnumerable是接口(不是实例本身,只是某些功能的模式),而是List实际的类。
使用其中一种比另一种有某种“优势”。
如果您正在编写一个想要更灵活的方法,并且只需要枚举对象,那么请使用IEnumerable.
List实现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);
}
Run Code Online (Sandbox Code Playgroud)
然后你就有了这些数据:
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" };
Run Code Online (Sandbox Code Playgroud)
这些都有效:
OutputEnumerable(stringList);
OutputEnumerable(stringCol);
OutputEnumerable(stringEn);
OutputList(stringList);
Run Code Online (Sandbox Code Playgroud)
而这些并没有:
OutputList(stringCol);
OutputList(stringEn);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4579 次 |
| 最近记录: |