我通过更改
尝试了该脚本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;
}
答案 0 :(得分:1)
看起来您没有在storerandomvalues
列表中添加任何内容,只是初始化了容量。 List(int)构造函数不会向列表中添加任何内容,它只会使后备存储大到足以容纳100个项目。如果你想将某些东西初始化为固定数量的项目,你真的应该使用数组,而不是列表:
float[] storerandomvalues = new float[100];
或者,您应该调整循环条件,以便检查storerandomvalues
和 i_f
的长度,以便索引不会偏离任何一个范围他们。