gpt4 book ai didi

c# - IEnumerable.ElementAt - 值存在时参数超出范围异常

转载 作者:行者123 更新时间:2023-11-30 19:35:25 34 4
gpt4 key购买 nike

我有这段代码从列表的计数 (-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;
}

异常和测试用例的图像:

包含 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);

关于c# - IEnumerable.ElementAt - 值存在时参数超出范围异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56787301/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com