C# 在特定索引处将int插入空列表

C# 在特定索引处将int插入空列表,c#,arrays,list,collections,C#,Arrays,List,Collections,我意识到,如果我的列表是空的,我不能在第三个索引中插入一些内容,因为它会抛出一个越界错误 列表=新列表; list.insert31000//System.ArgumentOutOfRangeException 我必须用null填充第一个和第二个元素,以便能够在第三个索引中插入内容。这似乎没有必要。但是如果它是一个数组,我可以在任何我想要的索引中插入一些东西,即使前面的索引没有赋值 int[]arr=新int[100]; arr[3]=1000//无误 有没有什么方法可以在不填充前一个索引的情况

我意识到,如果我的列表是空的,我不能在第三个索引中插入一些内容,因为它会抛出一个越界错误

列表=新列表; list.insert31000//System.ArgumentOutOfRangeException 我必须用null填充第一个和第二个元素,以便能够在第三个索引中插入内容。这似乎没有必要。但是如果它是一个数组,我可以在任何我想要的索引中插入一些东西,即使前面的索引没有赋值

int[]arr=新int[100]; arr[3]=1000//无误
有没有什么方法可以在不填充前一个索引的情况下插入到特定索引的空列表中?或者还有其他更好的集合吗?

插入列表就是在指定位置向列表中添加另一个元素。这与在数组中的索引处设置值不同。如果您有一个包含100个项目的数组,并将值设置为索引3,那么该数组中仍有100个项目。如果您有一个包含100个项目的列表,并且在索引3中插入了一些内容,那么现在就有一个包含101个项目的列表。

插入列表就是在指定位置向列表中添加另一个元素。这与在数组中的索引处设置值不同。如果您有一个包含100个项目的数组,并将值设置为索引3,那么该数组中仍有100个项目。如果您有一个包含100个项目的列表,并且在索引3中插入了一些内容,那么您现在有一个包含101个项目的列表。

其他集合类型 或者还有其他更好的收藏吗

你可以用一个小盒子。用法示例:

using System.Collections.Generic;

...

var items = new Dictionary<int, int>();
items.Add(3, 1000); // will throw error if 3 already exists

// Or update 
items[3] = 1000: // will not throw error if already exists or doesn't exist!
请注意,字典的顺序不保证。从

返回项目的顺序未定义

如果您需要订购保证,您可以使用或

SortedList和SortedDictionary的区别在于性能。引自:

这两个类的不同之处在于内存使用以及插入和删除的速度

与列表和数组相比,SortedDictionary和SortedList的工作原理稍有不同。我建议在使用其中一个文档时阅读链接的Microsoft文档

列表或数组中的空值 我必须用null填充第一个和第二个元素,以便能够在第三个索引处插入内容

请注意,不能在整数列表或数组中添加空值。只有使用可为null的int时才可能这样做。so新列表

其他集合类型 或者还有其他更好的收藏吗

你可以用一个小盒子。用法示例:

using System.Collections.Generic;

...

var items = new Dictionary<int, int>();
items.Add(3, 1000); // will throw error if 3 already exists

// Or update 
items[3] = 1000: // will not throw error if already exists or doesn't exist!
请注意,字典的顺序不保证。从

返回项目的顺序未定义

如果您需要订购保证,您可以使用或

SortedList和SortedDictionary的区别在于性能。引自:

这两个类的不同之处在于内存使用以及插入和删除的速度

与列表和数组相比,SortedDictionary和SortedList的工作原理稍有不同。我建议在使用其中一个文档时阅读链接的Microsoft文档

列表或数组中的空值 我必须用null填充第一个和第二个元素,以便能够在第三个索引处插入内容


请注意,不能在整数列表或数组中添加空值。只有使用可为null的int时才可能这样做。所以new List

int数组的元素总是被定义的——它们自动为0;list.insert31000;is int[]arr=新int[0];arr[3]=1000;。奇怪的是,它抛出了一个不同的错误。换句话说,调用new List定义了一个空列表,但是调用new int[100]创建了一个包含100个元素的数组-因此调用new int[0]创建了一个空数组。@MichaelRandall-这不是重复的。这可能有助于OP向前推进,但它并没有回答他的具体问题。@Enigmativity这就是为什么没有dup hammer的原因,尽管您是对的,但可能的重复可能会被措辞为可能的帮助int数组的元素总是被定义的-它们自动为0。等效于List List=new List;list.insert31000;is int[]arr=新int[0];arr[3]=1000;。奇怪的是,它抛出了一个不同的错误。换句话说,调用new List定义了一个空列表,但是调用new int[100]创建了一个包含100个元素的数组-因此调用new int[0]创建了一个空数组。@MichaelRandall-这不是重复的。这可能有助于OP向前推进,但它没有回答他的具体问题。@Enigmativity,这就是为什么没有dup hammer,虽然你是对的,但可能的重复可能被措辞为可能有用。这是如何回答OP提出的具体问题的?这是如何回答OP提出的具体问题的?正确答案。字典更适合这种情况。谢谢!但在回顾中我认为
由于有保证的订购,SortedList甚至更好。更新我的答案。或分类词典;还添加了答案。正确答案。字典更适合这种情况。谢谢!但在回顾中,我认为分类列表更好,因为有保证的顺序。更新我的答案。或分类词典;也补充了答案。
using System.Collections.Generic;

...

var items = new SortedDictionary<int, int>();
items.Add(3, 1000); // will throw error if 3 already exists

// Or update 
items[3] = 1000: // will not throw error if already exists or doesn't exist!