欢迎来到.net学习网

欢迎联系站长一起更新本网站!QQ:879621940

您当前所在位置:首页 » C# » 正文

热门阅读

索引超出范围。必须为非负值并小于集合大小的解决方法

创建时间:2011年11月15日 14:29  阅读次数:(72889)
分享到:
首先要知道,出现该错误的原因是因为访问了集合中不存在的值

打个很简单的比如:
例如现在声明了一个List<int >对象,并且向其中插入两条数据。那么它的下标只能是从0到1,我们通过下标访问List<int >中的值时,List[0],List[1]都不会有错,但从List[2]开始就会报"索引超出范围。必须为非负值并小于集合大小的解决方法"的错误了,因为List<int >对象中只有两个值,而你要从中取出第三个甚至更多的值来,当然就会报错了。

示例:
using System;
using System.Collections.Generic;
using System.Web.UI.WebControls;
using System.Data;

namespace WebApplication1
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        List<int > list = new List<int >(); 声明一个List<int >集合
        protected void Page_Load(object sender, EventArgs e)
        {
            //往集合中插入两条数据
            list.Add(100);
            list.Add(200);
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            //开始访问集合中的值
            Response.Write(list[0].ToString());//不会出错
            Response.Write(list[1].ToString());//不会出错
            Response.Write(list[2].ToString());//会报索引超出范围的错误,错误提示如下:
        }
    }
}

“/”应用程序中的服务器错误。
--------------------------------------------------------------------------------

索引超出范围。必须为非负值并小于集合大小。
参数名: index 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 

异常详细信息: System.ArgumentOutOfRangeException: 索引超出范围。必须为非负值并小于集合大小。
参数名: index

总结:
1,在应用程序中出现该错误时,我们就要想到是因为我们访问了不存在的集合值,最可能的原因是使用了集合的最大的索引值来访问集合值。比如我们在删除了某值后再来访问它,就会报出上面的错误了。
2,出现该错误另一个可能性,声明了集合后,并没有往集合中插入值就访问集合中的值了。
3,没有搞明白,集合的索引是从0开始的,也就是说如果集合中有i个值,那么list[0]是集合中的第一个值,list[i-1]就已经是集合中最后一个值了,list[i]就已经超出了集合的范围。O/fb颯齹O眰儚\剉鰁魰籗f[`NC
来源:.net学习网
说明:所有来源为 .net学习网的文章均为原创,如有转载,请在转载处标注本页地址,谢谢!
【编辑:Wyf

打赏

取消

感谢您的支持,我会做的更好!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

最新评论

共有评论0条
  • 暂无任何评论,请留下您对本文章的看法,共同参入讨论!
发表评论:
留言人:
内  容:
请输入问题 63+59=? 的结果(结果是:122)
结  果: