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 に答える