C#使用队列存储多个2D阵列

时间:2017-11-04 16:51:52

标签: c# arrays queue

我目前正在使用Visual Studio控制台制作棋盘游戏,我想在最后使用队列重放整个游戏。为了做到这一点,我确保每次绘制我的板时都会排队,以便将该板的实例添加到队列中。

我如何实例化队列:

Queue replay = new Queue();

每次更新电路板时使用的代码:

draw.UpdateBoard(board);
replay.Enqueue(board);

用于在结尾显示董事会所有实例的代码:

foreach (int[,] q in replay)
     {
           draw.UpdateBoard(q);
           System.Threading.Thread.Sleep(1000);
     }

遇到的问题是队列中只包含其最终状态的板的实例,我认为这是因为队列只能包含唯一值,因此当尝试添加到队列时它会覆盖所有队列先前的价值观。通过阅读其他示例,可以建议创建对象的新实例或将原始数据添加到队列中。由于这些与2D数组没有关系,我很难与之相关,有没有办法解决这个问题而不会在很大程度上改变我的代码流程?

1 个答案:

答案 0 :(得分:-1)

  

"当您将其排入重播时,您需要克隆该板。问题是当你将一个板状态排队时,你实际上是在指向代表该板的数据的指针。" - 萨姆纳埃文斯

replay.Enqueue(board.Clone);

然后会解决问题。