如何解决错误:索引超出范围。必须是非负数且小于集合的大小。参数名称:index [英] How to solve error: Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index

查看:201
本文介绍了如何解决错误:索引超出范围。必须是非负数且小于集合的大小。参数名称:index的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述





我收到此代码的错误:

Hi,

I am getting error with this code:

for (int i = 0; i <= gridview.Rows.Count; i++)
{
    if (!xxx.equals(gridview.Rows[i].Cells[0].Text))
    {
        dr = dt.NewRow();
        dr[0] = */adding value*/
        dt.Rows.Add(dr);
    }
}





我收到此错误 gridview.Rows [ i] .Cells [0] .Text line。

得到的错误是:



I am getting an error with this gridview.Rows[i].Cells[0].Text line.
Error which am getting is:

Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index



这个错误可能是什么原因?



请帮帮我


What may be the reason for this error?

Please help me

推荐答案

取消等于:

Take off the equals:
for (int i = 0; i <= gridview.Rows.Count; i++)

成为

Becomes

for (int i = 0; i < gridview.Rows.Count; i++)

C#数组是基于零的,但是< =给你一个太多元素。

即你有10行,那么你想0..9不是0..10

C# arrays are zero based, but <= gives you one too many elements.
I.e. is you have 10 Rows, then you want 0..9 not 0..10


你好Kavithale



你必须删除for循环中的'='。



b'cosi值从0开始,例如,如果你在gridview中有10条记录。你必须考虑0到9



Hi Kavithale

You have to remove the '=' in the for loop.

b'cos "i" value is starting from 0. for example, if u have 10 records in a gridview. you have to consider 0 to 9

for (int i = 0; i < gridview.Rows.Count; i++)
{
    if (!xxx.equals(gridview.Rows[i].Cells[0].Text))
    {
        dr = dt.NewRow();
        dr[0] = */adding value*/
        dt.Rows.Add(dr);
    }
}


我的建议是你可以使用foreach迭代器语句来travarse gridview。

代替of

My suggestion is you can use foreach iterator statement to travarse gridview.
Instead of that
for (int i = 0; i <= gridview.Rows.Count; i++)
{
    if (!xxx.Equals(gridview.Rows[i].Cells[0].Text))
    {
        dr = dt.NewRow();
        dr[0] = */adding value*/
        dt.Rows.Add(dr);
    }
}



你可以使用


You can use

 foreach (GridViewRow row in gridview.Rows)
 {
    if (!xxx.Equals(row[i].Cells[0].Text))
    {
        dr = dt.NewRow();
        dr[0] = */adding value*/
        dt.Rows.Add(dr);
    }
}



它更清晰,更易读。如果您遇到意外错误,它将使我们安全。 vs< =等问题。我总是喜欢foreach导航列表实现迭代器模式的列表。


It is more cleaner and readable. It will safe us for accidental errors like you faced < vs <= etc problem. I always prefer foreach to navigate list where list implement iterator pattern.


这篇关于如何解决错误:索引超出范围。必须是非负数且小于集合的大小。参数名称:index的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆