错误“索引超出范围。必须是非负数且小于集合的大小。参数名称:index”

时间:2014-03-02 18:50:16

标签: c#

我通过更改

尝试了该脚本
for (int ii = 0; ii < i_f.Length; ii++)

for (int ii = 0; ii < 100; ii++)

但我仍然遇到同样的错误

  

指数超出范围。必须是非负数且小于集合的大小。参数名称:index

float[][] b = Enumerable.Range(0, 1143600).Select(j => new float[100]).ToArray();
float[] i_f = new float[100];
List<float> storerandomvalues = new List<float>(100);

public float Error(int itemid)
{
    float error= 0f;
    float[] i_f = b[itemid];
    for (int ii = 0; ii < i_f.Length; ii++)
    {
        error += storerandomvalues[ii] * i_f[ii];     //error line
    }
    error = 1-error;
    return error;
 }

1 个答案:

答案 0 :(得分:1)

看起来您没有在storerandomvalues列表中添加任何内容,只是初始化了容量。 List(int)构造函数不会向列表中添加任何内容,它只会使后备存储大到足以容纳100个项目。如果你想将某些东西初始化为固定数量的项目,你真的应该使用数组,而不是列表:

float[] storerandomvalues = new float[100];

或者,您应该调整循环条件,以便检查storerandomvalues i_f的长度,以便索引不会偏离任何一个范围他们。