2016-10-19 3 views
-1

IListを介してこのメ​​ソッドをループして、年次会議を作成します。それは常に IList内での最後の会議をスキップ以外IListをループし、リストの最後のメンバーが見つからない

ループ作業を行います。

なぜそれがそれをしているのか分かりません。

私はさまざまな修正を試みましたが、いつも無限ループを作り出しています。

私はそれを見るためにもう一組の目が必要だと思います。

私はざらざらした詳細をいくつか残しましたが、ループの主な構造があります。

ありがとうございます!

public static IEnumerable<YearEvents> AnnualConferences(IList<conference> conferences) 
    { 
     //if list is empty, get out 
     if (conferences.Count == 0) 
     { 
      yield break; 
     } 

     var position = 0; 
     var confExists = GetConf(); 

     while (position < conferences.Count) 
     { 
      if (confExists) 
      { 
       CreateConferenceTitle(conferences[position].Title); 
       position++; 
      } 
      else 
      { 
       yield return 
        conferences[position].CreateConference(); 
       break; 
      } 
     } 

     position = position % conferences.Count; 

     var stopPos = conferences.Count - 1; 

     do 
     { 
      var startPos = position; 
      var nextPos = (position + 1) % conferences.Count; 

      while (nextPos != stopPos) 
      { 
       CreateConferenceTitle(conferences[position].Title); 
       position = nextPos; 
       nextPos = (position + 1) % conferences.Count; 
      } 

      yield return 
       conferences[position].CreateConference(); 
      position = nextPos; 

     } while (position != stopPos); 
    } 

答えて

1

yield returnの後に新しい値positionを割り当てます。

yield return conferences[position].CreateConference(); 
position = nextPos; 

このライン

position = nextPos; 

それさえ呼ばれていません。 returnの文の前に移動してみてください。

1

は、try

var stopPos = conferences.Count - 1; 

変化に

var stopPos = conferences.Count; 

while (position < conferences.Count) 

変化に

をチェックします
+0

ありがとうございました。私はそれを試して、無限ループに入ります。なぜなら、nextPosは最終的に0にリセットされ、プロセス全体が繰り返されるからです。 – SkyeBoniwell

関連する問題