实现空迭代器

Sam*_*ron 0 c# refactoring iterator

我有这个代码:

    public IEnumerable<int> Iterator {
        get { if (false) yield return -1; }
    }
Run Code Online (Sandbox Code Playgroud)

它相当丑陋,但是当你试图将它重构为:

    public IEnumerable<int> Iterator {
        get { return null; }
    }
Run Code Online (Sandbox Code Playgroud)

以下代码中断:

foreach (var item in obj.Iterator) {
}
Run Code Online (Sandbox Code Playgroud)

你会如何清理它?

Meh*_*ari 10

public IEnumerable<int> Iterator {
    get { yield break; }
}
Run Code Online (Sandbox Code Playgroud)


Kon*_*lph 6

NET框架已经具备的方式(使Jared的代码冗余)做的正是这一点,一个方法:System.Enumerable.Empty<T>.