我有一个char数组:
public static char[] boardposition = new char[9];
我想重置数组,我的书面功能是:
public static void Reset()
{
Array.Clear(boardposition,9, boardposition.Length);
}
当我拨打Reset()
时,我收到IndexOutOfRangeException
类型的例外情况。
我希望你们能帮助我。
答案 0 :(得分:7)
您传递9作为起始索引,并不是您的数组的有效索引。像这样Array.Clear(boardposition,0, boardposition.Length);
答案 1 :(得分:3)
方法Array.Clear采用以下参数:
一些测试编码包含了许多罪行......包括误导或无用文档的罪行。
在您的情况下,索引导致异常:最后一个有效位置将是Length - 1.
关于解决方案:如果您打算在保留bot初始指针和数组大小的同时清除整个数组,答案是:
Array.Clear(boardposition, 0, boardposition.Length );
但是,如果更改数组的地址没有问题,只需为它分配一个长度相同的新数组;最终结果仍然是长度为9的归零数组:
boardposition = new char[9];
编辑:最佳使用场景完全取决于以后如何在程序中使用纸板位置。
答案 2 :(得分:0)
如果索引小于数组的下限,长度小于零或者索引和长度的总和大于数组的大小,则可以引发IndexOutOfRangeException。
在您的情况下,索引和长度的总和是(boardposition.Length + 9),它超出了数组的长度,因此引发了异常。您需要将代码更改为:
public static void Reset()
{
Array.Clear(boardposition,0, 9);
}