2017-01-17 2 views
1

私は、コードのこの部分つまずい:利回りが戻った後も引き続きなぜですか?

public IEnumerable<object> Process() 
{ 
    foreach (var item in items) 
    { 

     if (item.Created < DateTime.Now) 
     { 
      yield return item; 
      continue; 
     } 
    } 
} 

誰かがcontinue、この場合では不必要ではない理由を理解する私を助けることができます(VSは、冗長制御フロージャンプ文としてcontinueをマークしませんか)?

+3

VSは大したことをしません。私はJetBrains Resharperがインストールされていると言ってVSを実行していると思われる – MickyD

+0

確かにVSはこれを見つけるのに十分スマートではありませんが、ReSharperは問題を解決します(VS2010とR#2016でテスト済み) – HimBromBeere

+0

' 'キーワードをC#で使用します。または誰かが何もしないようにすることを試みている人。 – user3185569

答えて

7

yield returnは、列挙子の一部として項目を返します。呼び出し元のメソッドが次の項目を要求すると、コードはyield returnの後の行で再開します。

この特定のケースでは、continueは冗長です。なぜなら、ループはその時点以降はそれ以上の作業を行わないからです。しかし、一般的なアプリケーションとして、それは多くの用途を持っています。

関連する問題