关于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);
            }

求个解答,多谢

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

img


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

img


要是想不报错,你可以在初始化list的时候加入list的大小。在()里面写入数量