C#中yield关键字的作用是什么?如何使用yield return和yield break?
大家好!我刚开始学习C#,遇到了`yield`关键字。老实说,我不太明白它的作用以及如何正确使用。
我看到一些例子中,`yield return`用在返回`IEnumerable`或`IEnumerable`的方法里。但我有两个问题:
1. 普通返回集合(例如通过`return`返回`List`)和使用`yield return`有什么区别?
2. 在真实项目中,什么时候真正需要它,而不仅仅是在教学示例中?
下面是我在MSDN上找到的一个例子,但我觉得它有点奇怪:
```csharp
static IEnumerable GetNumbers()
{
for (int i = 0; i < 10; i++)
{
yield return i;
}
}
```
为什么不能直接这样写?
```csharp
static List GetNumbers()
{
List list = new List();
for (int i = 0; i < 10; i++)
{
list.Add(i);
}
return list;
}
```
结果看起来是一样的——我们得