要将元素添加到List

时间:2014-01-06 06:35:48

标签: c# linq list foreach xelement

以下是我的代码,

List<float?> LValues = new List<float?>();
List<float?> IValues = new List<float?>();
List<float?> BValues = new List<float?>();
List<HMData>[] data = new List<HMData>[4];
List<HMData>[] Data = new List<HMData>[7];
float? Value_LfromList = 0;
float? Value_IfromList = 0;
float? Value_BfromList = 0;
int indexer=0;

foreach (var item in Read_xml_for_childobjects_id.Root.Descendants("object"))
{
data[indexer] = new List<HMData>();  // Error occuring on this line
for (int k = 0; k < 7; k++)
  {
    Value_LfromList = LValues.ElementAt(k);
    Value_IfromList = IValues.ElementAt(k);
    Value_BfromList = BValues.ElementAt(k);
    Data[k].Add(new HMData { x = Value_LfromList, y = Value_IfromList, z = Value_BfromList });
  } 
  indexer++;
 }

我打算在下一行的数据列表中添加元素,

Data[k].Add(new HMData { x = Value_LfromList, y = Value_IfromList, z = Value_BfromList });

我收到Object reference not set to instant of object,

错误

我想输出如下面的问题链接所示, Result required as shown in this question

我已经尝试了很多方法,但无法做到,如果提供的话,非常感谢帮助,谢谢。

2 个答案:

答案 0 :(得分:6)

  1. 您的代码是一场噩梦。你应该考虑重构......

  2. 您必须初始化Data数组中的列表。

    List<HMData>[] Data = new List<HMData>[7];
    for(int i = 0; i < 7; i++)
        Data[i] = new List<HMData>();
    
  3. 还有很多其他问题和问题需要提出(例如dataData之间的区别是什么?为什么这些数组显式大小?)。没有这些知识,每一条建议都不足以解决你的真正问题。

答案 1 :(得分:-2)

您只需要将列表声明为

List<HMData> Data = new List<HMData>();

并通过

将新元素添加到列表中
 Data.Add(new HMData { x = Value_LfromList, y = Value_IfromList, z = Value_BfromList });