要将元素添加到List

Res*_*hma 0 c# linq foreach xelement list

以下是我的代码,

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++;
 }
Run Code Online (Sandbox Code Playgroud)

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

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

我得到一个错误 Object reference not set to instant of object,

我想输出如下面的问题链接所示, 需要的结果如此问题所示,

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

Mar*_*zek 6

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

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

    List<HMData>[] Data = new List<HMData>[7];
    for(int i = 0; i < 7; i++)
        Data[i] = new List<HMData>();
    
    Run Code Online (Sandbox Code Playgroud)
  3. 还有很多其他的问题和问题需要问(比如dataData?之间有什么区别?为什么这些数组的大小明确?).没有这些知识,每个建议都不足以解决您的实际问题.