関数から戻ったり、関数を最後まで完了させたりする以外に、何か違うことはありますか? 注 VB.NET にはyield breakはありませんが、関数がiteratorキーワードでマークされている必要があります。
質問する
756 次
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 に答える