清除字符数组将无法正常工作

时间:2015-04-16 09:52:16

标签: c# arrays clear

我有一个char数组:

public static char[] boardposition = new char[9];

我想重置数组,我的书面功能是:

public static void Reset()
{            
     Array.Clear(boardposition,9, boardposition.Length);
}

当我拨打Reset()时,我收到IndexOutOfRangeException类型的例外情况。

我希望你们能帮助我。

3 个答案:

答案 0 :(得分:7)

您传递9作为起始索引,并不是您的数组的有效索引。像这样Array.Clear(boardposition,0, boardposition.Length);

进行通话

答案 1 :(得分:3)

方法Array.Clear采用以下参数:

  • 数组数组 - 将执行清除的数组。
  • int index - 开始清算的起始位置
  • int length - 应清除的元素数。

一些测试编码包含了许多罪行......包括误导或无用文档的罪行。

在您的情况下,索引导致异常:最后一个有效位置将是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);
}