索引超出范围

本人遇到这个问题,首先要知道,出现这个错误原因是访问了集合中不存在的值
例如一个List对象并且向其中插入两条数据。下标只能是从0到1,通过下标访问List中的值时,List[0],List[1]都不会有错,但从List[2]开始就会报"索引超出范围。必须为非负值并小于集合大小的解决方法"的错误了,因为List对象中只有两个值,而要从中取出第三个甚至更多的值来,就会报错。

   namespace WebApplication1
    {
        public partial class WebForm1 : System.Web.UI.Page
        {
            List list = new List(); 
            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] 就已经超出了集合的范围
这是报错:
索引超出范围_第1张图片

你可能感兴趣的:(C#基础)