列出<t> .Insert()超出范围? C#

时间:2018-06-11 04:15:52

标签: c# list insert

我试图在特定索引的列表中添加一个值,根据我读过的所有内容,该值应该可以使用List的Insert()方法。

除了我得到例外&#34;索引必须在列表的范围内。参数名称:index`

这是我的完整示例代码。

class Program
{
    static void Main(string[] args)
    {
        MyList myList = new MyList();
    }
}
class MyList : List<int>
{
    public MyList()
    {
        this.Capacity = 2;
        this.Insert(1, 0);
    }
}

是唯一可以更改为可空列表类型并为每个索引调用.Add(null)而不使用Insert()的选项吗?

2 个答案:

答案 0 :(得分:1)

  • 容量不等于列表大小,内部大小调整之前的内部大小,性能
  • 列表不从1开始,它们从0开始

List.Capacity Property

  

获取或设置内部数据结构的元素总数   可以在不调整大小的情况下持有。

您正在尝试向不存在的存储桶添加内容

<强>更新

  

我正在尝试在最后一个索引之后插入一个项目,这就是   使用1。

从您的代码中,0处没有任何内容可以在1

处添加任何内容

在向1

添加内容之前先添加一些内容为0

也不要继承表单列表,因为很多原因它的表单不好。

var myAwesomeList = new List<int>();
// add the number 10
myAwesomeList.Add(10);
// insert the number 7 before 10
myAwesomeList.Insert(0,7);

答案 1 :(得分:1)

您无法在最后一项之外插入项目,这就是您收到超出范围的错误消息的原因。

如果您事先知道列表不会超过特定大小的容量,那么设置列表的容量会很有趣。

设置容量不会在列表中创建任何元素。