C# “错误”;索引超出范围。必须为非负数且小于集合的大小。参数名称:index";
我试着改变剧本C# “错误”;索引超出范围。必须为非负数且小于集合的大小。参数名称:index";,c#,C#,我试着改变剧本 for (int ii = 0; ii < i_f.Length; ii++) for(int ii=0;ii
for (int ii = 0; ii < i_f.Length; ii++)
for(int ii=0;ii
进入
for(int-ii=0;ii<100;ii++)
但我还是犯了同样的错误
索引超出范围。必须为非负数且小于集合的大小。参数名称:索引
float[]b=Enumerable.Range(01143600)。选择(j=>newfloat[100]).ToArray();
浮动[]i_f=新浮动[100];
List storerandomvalues=新列表(100);
公共浮点错误(int itemid)
{
浮动误差=0f;
float[]i_f=b[itemid];
对于(int ii=0;ii
看起来您没有向storerandomvalues
列表中添加任何内容,您只是初始化了它的容量。列表(int)构造函数没有向列表添加任何内容,它只是使备份存储足够大,可以容纳100个项目。如果要将某些内容初始化为固定数量的项,则确实应该使用数组,而不是列表:
float[] storerandomvalues = new float[100];
或者,您应该调整循环条件,以便它检查
storerandomvalues
和i\u f
的长度,以便索引不会偏离其中任何一个的范围。如果确实要使用该索引器,则只需将该列表转换为数组即可。不要使用我自己发布的列表。这是一个完全不同的@AlexanderNo,完全相同。storerandomvalues[ii]-->这是错误的,集合长度小于该迭代
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;
}
float[] storerandomvalues = new float[100];