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

Posted

技术标签:

【中文标题】错误“索引超出范围。必须为非负数且小于集合的大小。参数名称:索引”【英文标题】:Error "Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index" 【发布时间】:2014-04-03 14:50:49 【问题描述】:

我通过更改尝试了脚本

for (int ii = 0; ii < i_f.Length; ii++)

进入

for (int ii = 0; ii < 100; 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;
 

【问题讨论】:

"Index was out of range. Must be non-negative and less than the size of the collection.\r\nParameter name: index"的可能重复 如果你真的想使用那个索引器然后把那个列表变成一个数组。不要使用列表 我自己发的。那是完全不同的@Alexander 不,那是完全一样。 storerandomvalues[ii] --> 即错误,集合长度小于该迭代 【参考方案1】:

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

float[] storerandomvalues = new float[100];

或者,您应该调整循环条件,使其检查storerandomvalues i_f 的长度,这样索引就不会超出它们的范围。

【讨论】:

以上是关于错误“索引超出范围。必须为非负数且小于集合的大小。参数名称:索引”的主要内容,如果未能解决你的问题,请参考以下文章

创建任务时列出索引超出范围异常

远程服务器返回错误: 404错误远程服务器返回错误:500错误 HttpWebResponse远程服务器返回错误:(404500) 错误。

Pig 安装错误:错误 pig.Main:错误 2998:未处理的内部错误

Informix 错误:发生了语法错误。错误代码:-201

我收到一个错误:“MetaMask - RPC 错误:错误:错误:[ethjs-rpc] rpc 错误与有效负载”

错误精灵错误跟踪器错误