0

除了从返回或让函数完成到最后,它有什么不同吗?注意 VB.NET 没有yield break但要求函数用iterator关键字标记。

4

1 回答 1

3

谈到C#,如果你想编写一个迭代器,如果源为 null 或为空,则不返回任何内容。这是一个例子:

public IEnumerable<T> EnumerateThroughNull<T>(IEnumerable<T> source)
{
    if (source == null)
        yield break;

    foreach (T item in source)
        yield return item;
}

如果没有yield break. 它还指定迭代器已经结束。您可以将其yield break视为不返回值的 return 语句。

int i = 0;
while (true) 
{
    if (i < 5)       
        yield return i;
    else            
        yield break; // note that i++ will not be executed after this statement
    i++;
}    
于 2012-11-23T06:30:22.150 回答