我正在使用 Photon 服务器运行多人游戏,每 100 多场游戏中一次,服务器停止响应输入 - 查看日志文件我收到以下异常:
2013-07-30 12:31:24,918 [11] ERROR Lite.Room [(null)] - System.IndexOutOfRangeException:索引超出了数组的范围。在 C:\Program Files (x86)\Photon\Photon src-server\STSServer\STSLib\Engine.cs:line 130 中的 STSLib.Engine.handleInput(Hashtable 输入,Int32 playerId)
查看我的代码,我的引擎类的第 130 行是一个 foreach 循环:
foreach (Player p in players)
{
Queue playerQueue = new Queue();
returnTable.Add(p.playerId, playerQueue);
}
其中 player 是我用来代表(你猜对了!)游戏玩家的一个类,而 player 是一个 Player 数组。returntable,是我发送给客户端的其他数据的哈希表队列的哈希表,我只是用一个空队列实例化每个键。
在这种情况下,foreach 循环被调用,并在游戏被破坏之前多次运行——也就是说,这个异常在游戏过程中开始被抛出。
谁能解释一下 foreach 循环如何抛出索引越界异常?