Jor*_*nGW 2 c# ienumerable exception
我有一段代码,它从列表的计数(-1)中获取一个随机数,然后在该索引处获取元素。然后,我从该列表中删除该对象,并调用代码,直到所有对象都从该列表中消失为止。
我对如何有13个索引(0-12)感到困惑,我用来获取元素的整数是11。这怎么可能超出有效值范围?
private Player GetRandomPlayer(List<Player> entries)
{
var rIdx = rnd.Next(entries.Count - 1);
var player = entries.Where(i => i.Seed == null).ElementAt(rIdx);
entries.Remove(player);
return player;
}
Run Code Online (Sandbox Code Playgroud)
异常和测试用例的图像:
列出13个值:https: //ibb.co/wQdq1q4
包括用于获取值的int的异常:https : //ibb.co/mJXwMFh
该ElementAt()方法适用于您的Where子句的返回值。如果少于rIdx+1元素,Seed == null则会出现异常。
通过假设您要实现的目标,我认为这应该可行:
// filter list
var nullEntries = entries.Where(i => i.Seed == null).ToList();
// use only filtered values
var rIdx = rnd.Next(nullEntries.Count - 1);
var player = nullEntries[rIdx];
entries.Remove(player);
Run Code Online (Sandbox Code Playgroud)