【发布时间】:2020-05-28 16:31:25
【问题描述】:
我意识到如果我的列表是空的,我不能在第三个索引处插入一些东西,因为它会抛出一个越界错误。
List<int> list = new List<int>();
list.Insert(3, 1000); //System.ArgumentOutOfRangeException
我必须用 null 填充第一个和第二个元素,以便我能够在第三个索引处插入一些东西。这似乎是不必要的。但是如果它是一个数组,我可以在任何我想要的索引中插入一些东西,即使之前的索引没有被分配。
int[] arr = new int[100];
arr[3] = 1000; //no error
有什么方法可以在不填充前一个索引的情况下插入特定索引处的空列表?或者还有其他更好的收藏吗?
【问题讨论】:
-
int数组的元素始终被定义 - 它们自动为0。 -
List<int> list = new List<int>(); list.Insert(3, 1000);的等价物是int[] arr = new int[0]; arr[3] = 1000;。奇怪的是,它引发了一个不同的错误。 -
换句话说,调用
new List<int>()定义了一个空列表,但调用new int[100]会创建一个包含100元素的数组——所以调用new int[0]会创建一个空数组。 -
@MichaelRandall - 这不是重复的。它可能会帮助 OP 前进,但它不能回答他的具体问题。
-
@Enigmativity 这就是为什么没有 dup 锤子的原因,虽然你是对的
标签: c# arrays list collections