当自定义类包含List <t> it self?</t> </custom>时,如何创建List <custom class =“”>

时间:2011-10-09 17:30:36

标签: class list c#-4.0

我正在尝试使用列表列表创建一个类,但无法使其工作:

public class Structure
{
    public List<int> variable1 = new List<int>();
    public double variable2 { get; set; }
}

public class StructureHolder
{
    public List<Structure> variable3 = new List<Structure>();
    public void InitLists()
    {
        variable3.Capacity = 1;
        variable3[0].variable1.Capacity = 20;
    }
    public void SomeMethod()
    {
        //Perform operations on values storred in variable3[i].variable1
    }
}

现在,当我创建类StructureHolder的SomeVariable并尝试访问SomeVariable.variable3 [0] .variable2时,我的范围错误。

EDIT1: 修复了这个问题,但我仍然超出了范围异常:

variable3.Capacity = 1;
variable3.Add(new Structure());
variable3[0].variable1.Capacity = 20;
variable3[0].variable1[0] = 123;    //out off range error

2 个答案:

答案 0 :(得分:0)

但是StructureHolder中的列表还没有包含任何元素。 你必须添加例如。

variable3.Capacity = 1;
variable3.Add(new Structure());
variable3[0].variable1.Capacity = 20;

答案 1 :(得分:0)

这是因为您正在尝试访问空列表。您只需初始化列表

public List<Structure> variable3 = new List<Structure>();

但从不添加一些元素:

variable3.Add(...);

因此,您需要在访问项目之前先添加项目:

variable3.Add(new Structure()); // adding item
variable3[0].variable2 = 100d; // accessing just added element field