在IList中循环,并且缺少列表的最后一个成员
本文关键字:列表 最后一个 成员 IList 循环 | 更新日期: 2023-09-27 18:14:03
我下面有一个方法,它循环通过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);
}
在yield return
之后分配新的position
值。
yield return conferences[position].CreateConference();
position = nextPos;
这条线路
position = nextPos;
甚至连电话都没有。尝试在return
语句之前移动它。
尝试检查
var stopPos = conferences.Count - 1;
更改为
var stopPos = conferences.Count;
和
while (position < conferences.Count)
更改为
while (position <= conferences.Count)