要处理来自日志文件的数据,我将数据读入列表。将列表中的struct成员转换为数组
当我试图从列表转换为图表例程的数组时,我遇到了麻烦。
为了讨论起见,我们假设日志文件包含三个值* - x,y和theta。在执行文件I/O的例程中,我读取了三个值,将它们分配给一个结构并将结构添加到PostureList。
绘图程序,希望x,y和theta在单个数组中。我的想法是使用ToArray()方法进行转换,但是当我尝试下面的语法时,出现错误 - 请参阅下面的注释中的错误。我有一种替代方法来进行转换,但希望获得有关更好方法的建议。
我对C#很陌生。在此先感谢您的帮助。
注意:*实际上,日志文件包含许多不同的有效负载大小的不同信息。
struct PostureStruct
{
public double x;
public double y;
public double theta;
};
List<PostureStruct> PostureList = new List<PostureStruct>();
private void PlotPostureList()
{
double[] xValue = new double[PostureList.Count()];
double[] yValue = new double[PostureList.Count()];
double[] thetaValue = new double[PostureList.Count()];
// This syntax gives an error:
// Error 1 'System.Collections.Generic.List<TestNameSpace.Test.PostureStruct>'
// does not contain a definition for 'x' and no extension method 'x' accepting a first
// argument of type 'System.Collections.Generic.List<TestNameSpace.Test.PostureStruct>'
// could be found (are you missing a using directive or an assembly reference?)
xValue = PostureList.x.ToArray();
yValue = PostureList.y.ToArray();
thetaValue = PostureList.theta.ToArray();
// I could replace the statements above with something like this but I was wondering if
// if there was a better way or if I had some basic mistake in the ToArray() syntax.
for (int i = 0; i < PostureList.Count(); i++)
{
xValue[i] = PostureList[i].x;
yValue[i] = PostureList[i].y;
thetaValue[i] = PostureList[i].theta;
}
return;
}