有人可以帮我解决这个问题吗? 所以,在第70和第75行,我在数组中添加了一个新值,但是我收到了这个错误:
未处理的异常:System.IndexOutOfRangeException:索引超出了数组的范围。
在Application.Main()< 0x41237d50 + 0x00729> in:0
[ERROR]致命的未处理异常:System.IndexOutOfRangeException:索引超出了数组的范围。
在Application.Main()< 0x41237d50 + 0x00729> in:0
代码:
谢谢!
答案 0 :(得分:0)
您获得例外的地方的代码:
num_players = num_players + 1;
Array.Resize(ref players, num_players);
players[num_players].Name = s;
resize语句将数组的大小调整为索引范围为0到num_players-1的数组。您可以使用的最高索引是num_playes-1。
因此,如果您尝试访问播放器[num_players],则可能会出现异常。
调整阵列大小是一项非常昂贵的操作。如果您确定数组的大小永远不会改变,人们常常建议只使用数组。在所有其他情况下,使用List<玩家>。您永远不必调整它,只需添加元素,它们将被添加到列表的末尾。
顺便说一句,我在你的代码中看到了一些奇怪的东西:
for(int k = 0; k == num_players; k--)
{
players[k] = players[k + 1];
}
所以你从k = 0开始;做你的东西并做k--,给你一个k == -1的值。我几乎不相信那是你打算做的。