在C#中,您可以构造返回类型为IEnumerable<T>
和并使用yield return
和yield break
控制流程的方法。这是使用两个控件的简单示例:
public IEnumerable<int> GetEvens(int start, int end) {
if(end < start)
yield break;
if(start & 2 != 0)
start++;
for(int i = start; i <= end; i+=2) {
yield return i;
}
}
我的问题是,为什么它最初设计为与一起使用两个关键字,yield
而不是像下面那样使用单个关键字yield
“产生返回值”来使用它:
public IEnumerable<int> GetEvens(int start, int end) {
if(end < start)
return; // stop completely and return nothing
if(start & 2 != 0)
start++;
for(int i = start; i <= end; i+=2) {
yield i; // yield the current value.
}
}
对我来说,这更容易阅读和理解。
yield x;
那时也不会出现语法错误吗?