c#列表-添加到列表的底部

本文关键字:列表 底部 添加 | 更新日期: 2023-09-27 18:10:38

我有一个List<T>,想从底部开始添加,但我得到一个运行时IndexOutOfBoundsException

我初始化了一个容量为:

的列表
List<ClassA> ClassesOfA = new List<ClassA>(10);
...
...
ClassesOfA[5] = classAObj;
...

有办法吗?

我需要这样做,因为我正在从底部分析另一个列表并将结果添加到该列表。所以我需要能够从下往上加。是否有任何方法可以做到这一点,而不是在添加我的对象之前初始化List<ClassA>ClassA对象?

c#列表-添加到列表的底部

要向列表中添加项目,您应该调用ClassesOfA.Add()。以这种方式添加的任何项都将被添加到列表的末尾(不确定列表的开头还是结尾是您认为的底部)。

您可以尝试像这样添加元素:ClassesOfA.Add(classAObj),然后当添加所有列表元素时,您可以调用ClassesOfA.Reverse()来反转列表中对象的顺序。

如果第二个列表的元素数量与第一个列表的元素数量相同,我认为你应该使用这样的数组:

var myArray = new ClassA[listA.Count];
for (int i = 0; i < listA.Count; ++i) myArray[i] = Process(listA[i]);

另一种选择是,最好保持两个列表并在末尾将它们连接起来:

var firstList = new List<ClassA>(); 
var secondList = new List<ClassA>();
// Fill the lists.
return firstList.Concat(secondList).ToList(); // using System.Linq;


然而,如果你真的想走你建议的路线:

为了"保留"空间,你需要添加尽可能多的空项:

var list = new List<ClassA>(10);
list.AddRange(new ClassA[5]);
// Or...
var list = Enumerable.Repeat<ClassA>(null, 5).ToList();

现在您可以继续从索引5开始Add项:

list.Add(new ClassA());

Capacity不预先用尽可能多的项填充列表。如果你想让前5个空,这是我能看到的最好的。

Add将从此处开始向列表底部添加项目。我不太确定你为什么要这样做。