JerryJoestar 2022-08-12 10:21 采纳率: 66.7%
浏览 60
已结题

关于List<>中添加元素的问题

想问一下这个list中添加元素,为什么不能像数组一样用这种方法:

List<int> list = new List<int>();
            int sum = 0;
 for (int i = 0; i < 9; i++)
            {
                sum += i;
                list[i] = sum;
            }

上面显示:引发的异常:“System.ArgumentOutOfRangeException”(位于 mscorlib.dll 中)
“System.ArgumentOutOfRangeException”类型的未经处理的异常在 mscorlib.dll 中发生
索引超出范围。必须为非负值并小于集合大小。
但是用这种方法就没事了

List<int> list = new List<int>();
            int sum = 0;
            for (int i = 0; i < 9; i++)
            {
                list.Add(sum += i);
            }

求个解答,多谢

  • 写回答

2条回答 默认 最新

  • 石岩Maple 2022-08-12 10:33
    关注

    List开始没有长度,你直接List[i]所以会报索引溢出,但是Add方法走的其实就是先增加容量,后增加数据的方式。

    img


    这是Add的原生实现逻辑,它在每一次Add的时候都会检查一下List的大小,以确保能够把数据加进去

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 8月20日
  • 已采纳回答 8月12日
  • 创建了问题 8月12日