我正在研究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);
我是否知道这种行为的原因以及我在哪里犯错?
答案 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());
将它应用到您的环境中时,这对您有用吗?