C#中的IEnumerable和List:如何选择以及它们如何工作?
你好!我是C#新手,经常在需要选择IEnumerable和List时感到困惑。例如,我写了一个从数据库返回数字列表的方法:
```csharp
public List GetNumbers()
{
var numbers = new List();
for (int i = 0; i < 10; i++)
{
numbers.Add(i);
}
return numbers;
}
```
但我的同事说最好返回IEnumerable。我不明白为什么。我还注意到在LINQ中,像Where()这样的方法返回IEnumerable,而ToList()将其转换为List。当我写:
```csharp
var query = numbers.Where(n => n > 5);
foreach (var n in query)
{
Console.WriteLine(n);
}
```
一切正常,但我不知道“底层”发生了什么。性能上有区别吗?可以在IEnumerable中修改元素吗?什么时候应该使用一个,什么时候使用另一个?请用简单的例子解释一下,让我最终弄明白。
<<>>