我有一个定义为容纳120个值的空列表,即使该列表当前为空,我也想在index(45)处插入一个元素。这可能吗?
public List<Ticket> Tickets = new List<Ticket>(120);
Tickets.Insert(45,ticket); // Here I am getting the ArgumentOutOfRangeException
最佳答案
您将列表的初始内部容量设置为120。列表仍然为空。List<T>
可以容纳任意数量的项目。在内部,它使用数组存储它们。如果阵列已满,则列表将分配一个更大的新数组。如果您事先知道项目数,则可以在构造列表时设置内部数组的大小。这样可以避免不必要的内存分配。
您可以使用一个数组:
Ticket[] tickets = new Ticket[120];
tickets[45] = ticket
或
Dictionary<int, Ticket>
Dictionary<int, Ticket> tickets = new Dictionary<int, Ticket>();
tickets.Add(45, ticket);
或创建一个包含120个null的
List<Ticket>
:List<Ticket> tickets = Enumerable.Repeat(default(Ticket), 120).ToList();
关于c# - 如何在自定义索引的列表中插入对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34437227/