错误:使用变量时的ArrayBoundsError

时间:2011-11-08 00:13:42

标签: arrays d

我有一个长度为1的静态大小数组,我尝试在索引0处分配一个值。

void main() {
   int length = 0;
   int[1] arr;

   arr[0] = 1;
   arr[length] = 2;
}

使用上面的代码,我得到

的运行时错误
Error: ArrayBoundsError array.d(6)

对该行进行协调:arr [length] = 2。

为什么常量0有效,但值为0的变量不起作用?

1 个答案:

答案 0 :(得分:4)

length在索引/切片表达式中具有特殊含义 - 它与$(被索引/切片的数组的长度)完全相同。因此,arr[length]将始终生成ArrayBoundsError

注意:D2中不推荐使用length,D1和D2都会发出警告(启用警告时):array 'length' hides other 'length' name in outer scope