我试图了解使用 Yield 来枚举集合。我写了这个基本代码:
static void Main(string[] args)
{
Iterate iterate = new Iterate();
foreach (int i in iterate.EnumerateList())
{
Console.Write("{0}", i);
}
Console.ReadLine();
}
class Iterate
{
public IEnumerable<int> EnumerateList()
{
List<int> lstNumbers = new List<int>();
lstNumbers.Add(1);
lstNumbers.Add(2);
lstNumbers.Add(3);
lstNumbers.Add(4);
lstNumbers.Add(5);
foreach (int i in lstNumbers)
{
yield return i;
}
}
}
(1)如果我简单地使用return i
而不是yield return i
怎么办?
(2) 使用 Yield 有什么优势,什么时候更喜欢使用它?
已编辑**
在上面的代码中,我认为使用foreach
两次是一种开销。第一个在方法main function
中,第二个在EnumerateList
方法中。