以下是我的代码,
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,
我已经尝试了很多方法,但无法做到,如果提供的话,非常感谢帮助,谢谢。
答案 0 :(得分:6)
您的代码是一场噩梦。你应该考虑重构......
您必须初始化Data
数组中的列表。
List<HMData>[] Data = new List<HMData>[7];
for(int i = 0; i < 7; i++)
Data[i] = new List<HMData>();
还有很多其他问题和问题需要提出(例如data
和Data
之间的区别是什么?为什么这些数组显式大小?)。没有这些知识,每一条建议都不足以解决你的真正问题。
答案 1 :(得分:-2)
您只需要将列表声明为
List<HMData> Data = new List<HMData>();
并通过
将新元素添加到列表中 Data.Add(new HMData { x = Value_LfromList, y = Value_IfromList, z = Value_BfromList });