将元素插入多维列表抛出索引超出范围异常

时间:2014-09-02 17:58:43

标签: c# list

我正在研究C# list,这是我自己创建的多维类型,我正在尝试从另一个列表中插入元素到该列表,由于某些原因,抛出索引超出了范围异常尝试使用以下代码将值插入0th

List<StructuresDS> listStructures = new List<StructuresDS>();
                    listStructures[0].time =Convert.ToDateTime(AxiomSubSet[0].time.ToString("HH:mm:ss"));
                    listStructures[0].CC = AxiomSubSet[0].CC;
                    listStructures[0].term = listCodedTerms[0];
                    listStructures[0].strike = (Convert.ToDouble(AxiomSubSet[0].strike) * 100).ToString();
                    listStructures[0].strategy = AxiomSubSet[0].strategy;
                    listStructures[0].premium = Convert.ToDouble(AxiomSubSet[0].price);
                    listStructures[0].volume = Convert.ToInt32(AxiomSubSet[0].quantity);

我是否知道这种行为的原因以及我在哪里犯错?

2 个答案:

答案 0 :(得分:4)

您正在尝试设置listStructures[0],但尚未添加。你应该只需要做一些事情:

List<StructuresDS> listStructures = new List<StructuresDS>();
listStructures.Add(new StructureDS 
                   {
                       time = Convert.ToDateTime(AxiomSubSet[0].time.ToString("HH:mm:ss")),
                       CC = AxiomSubSet[0].CC,
                       // etc.
                   });

答案 1 :(得分:1)

我必须在AxiomSubSet和listCodedTerms的值中存根,并假设AxiomSubset.time是一个日期,但是在StructuresDS中是一个字符串。我还假设溢价和成交量分别为双倍和整数。其他一切都是一个字符串,但下面的代码编译和功能正如我所料。我相信你的问题是你在实例化列表之后假设第0个元素,但是你没有添加任何内容。 listStructures.Add(new StructuresDS {...})也可以解决这个问题。

List<StructuresDS> listStructures = new List<StructuresDS> { 
    new StructuresDS {
                    time = Convert.ToDateTime(AxiomSubSet[0].time.ToString("HH:mm:ss")),
                    CC = AxiomSubSet[0].CC,
                    term = listCodedTerms[0],
                    strike = (Convert.ToDouble(AxiomSubSet[0].strike) * 100).ToString(),
                    strategy =  AxiomSubSet[0].strategy,
                    premium = Convert.ToDouble(AxiomSubSet[0].price),
                    volume =Convert.ToInt32(AxiomSubSet[0].quantity)
                    }
};

为了测试对象是按预期创建的并且列表的第0个元素包含期望值,我使用下面的表单将对象的每个属性写入控制台:

Console.WriteLine(listStructures[0].time.ToString());

将它应用到您的环境中时,这对您有用吗?