我已经多次通读C# 3.0的迭代器/枚举器部分,但我仍然很难掌握它。从他们的名字来看,我最初的想法是 Iterator 会迭代一组 Enumerable 对象。我在正确的轨道上吗?如果是这样,那么常见的泛型集合,比如 aList<T>
呢?List 在其某些操作期间是否创建/使用迭代器?T 是自动可枚举的吗?有演员表吗?一个甚至与另一个有任何关系吗?
在一些相关的说明中,在学习 MVC 时,我看到了如下代码:
public Article GetArticle(int id)
{
return _siteDB.Articles.SingleOrDefault(a => a.ArticleID == id);
}
public IEnumerable<Article> GetArticle(string title)
{
return _siteDB.Articles.Where(a => a.Title.StartsWith(title)).AsEnumerable<Article>();
}
有一个返回类型IEnumerable<T>
给我什么?
编辑:好的,我想我开始明白了。我的困惑仍然是迭代器。这本书将他们描述为枚举器的生产者。我看不出实际发生在哪里yield return
。每个产量都会创建一个新的枚举器吗?