c# - 寻找循环列表解决方案

标签 c# .net list collections

我不太确定如何解决这个问题,所以我将从“伪”代码开始:

List<Player> players = new List<Player>();
players.Add(p1);
players.Add(p2);
players.Add(p3);

while(true) //infinite loop
{
    Player nextOne = players.Get(); // It will always get next player
}

我正在寻找一个集合/列表/缓冲区/数组等,它们将具有某种“获取” 方法,它总是返回下一个项目。当它到达终点时,它将返回第一个项目。

纸牌游戏就是一个很好的例子,比如扑克:我有玩家列表..我总是返回下一个玩家,就像在圈子里一样。

我的问题是:是否已经在 C#/.NET 的某处实现了此类集合? 如果不是,是否为 List 编写扩展方法是最佳解决方案?

最佳答案

您可以使用以下方法创建一个序列,该序列是另一个(可能是有限的)序列的无限重复。

//TODO consider coming up with a better name
public static IEnumerable<T> IterateInfinitely<T>(
    this IEnumerable<T> sequence)
{
    while(true)
        foreach(var item in sequence)
            yield return item;
}

使用它你现在可以写:

foreach(var player in players.IterateInfinitely())
{
    //TODO do stuff 
}

关于c# - 寻找循环列表解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33130359/

相关文章:

c# - 命名空间和类冲突(?)

c# - 尝试将 FK 设置为 null 时违反参照完整性约束

c# - 自动编译 Linq 查询

.net - Right$(string, 3) 的含义

c# - 插入 Entity Framework 后导航属性为 NULL

c# - 在C#中创建多个TCP连接然后等待数据

c# - 什么是生活模拟器的好架构

python - 如何编写一个python函数,当输入是列表时返回列表,当输入是非列表时返回非列表值?

Java:可变长度参数作为递归列表

c++ - 如何 list.sort(member Function);?