C#在实现IEnumerable时使用yield来创建IEnumerator
示例
该IEnumerable<T>接口具有单个方法GetEnumerator(),该方法返回IEnumerator<T>。
虽然yield关键字可用于直接创建关键字IEnumerable<T>,但也可以以完全相同的方式用于创建关键字IEnumerator<T>。唯一改变的是方法的返回类型。
如果我们要创建自己的实现IEnumerable<T>以下内容的类,这可能会很有用:
public class PrintingEnumerable<T> : IEnumerable<T>
{
private IEnumerable<T> _wrapped;
public PrintingEnumerable(IEnumerable<T> wrapped)
{
_wrapped = wrapped;
}
// This method returns an IEnumerator<T>, rather than an IEnumerable<T>
//但是yield语法和用法是相同的。
public IEnumerator<T> GetEnumerator()
{
foreach(var item in _wrapped)
{
Console.WriteLine("Yielding: " + item);
yield return item;
}
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}(请注意,此特定示例仅是说明性的,并且可以通过单个迭代器方法返回来更干净地实现IEnumerable<T>。)
热门推荐
3 甄嬛传祝福语简短
10 公司个人新年祝福语简短
11 服装超市开业祝福语简短
12 送花祝福语简短十一朵
13 上班祝福语简短文案
14 婆婆蛋糕祝福语简短英文
15 牙医生日祝福语简短
16 生物老师高考祝福语简短
17 秋分祝福语简短文案
18 单位搬迁员工祝福语简短