C#动态大小索引器

时间:2009-11-20 07:50:36

标签: c#

如何设置动态增长的索引器?向下,我使用固定大小的数组。 如果我使用List<Employee>,那么没有必要有索引器。所以我怎么能保持 数组动态增长?

class Department
{
    private Employee[] employee = new Employee[6];

    public Employee this[int arg]
    {
        get { return this.employee[arg]; }
        set { this.employee[arg] = value; }
    }
}

2 个答案:

答案 0 :(得分:4)

如果索引大于当前大小,则必须创建新数组,并将现有内容复制到新数组中。 Array.Resize会为您完成此操作。 (请注意,它不会更改现有数组 - 它会返回指定大小的新数组,包含前面的元素。)

您可能需要考虑调整大小而不是实际需要的数组,这样您就不必经常调整大小。

你确定使用List<T>会不会更容易?当它已经内置到框架中时,手动执行此类操作相当繁琐......

答案 1 :(得分:2)

  

如果我使用List,那么就有了   没有必要拥有索引器

为什么呢?您仍然可以使用带有列表的索引,并且可以在构造时定义列表的初始容量。见这里:http://msdn.microsoft.com/en-us/library/d0cyc8ex.aspx