使用C#通用列表

时间:2017-12-25 07:54:24

标签: c# generic-list

我正在计算物体的距离。

X和Y位置值首先存储在两个不同的列表X和W中。

然后我使用另一个List来存储此对象所覆盖的距离。此外,如果计数达到10,我会刷新列表,以避免内存负担。

在距离值的基础上,我必须分析,如果物体处于静止位置,距离不应该增加。在文本框显示中,计算出的距离值似乎是静态的。

实际上,我正在使用传感器来计算距离。并且由于传感器错误,即使物体处于静止状态,距离值也会变化。传感器误差阈值约为15cm。

我已经开发了逻辑,但是,我收到了错误:

  

System.ArgumentOutOfRangeException:'索引超出范围。必须是非负数且小于集合的大小。参数名称:index'

我的代码如下:

 void distance()
    {
        List<double> d = new List<double>();
        double sum = 0, sum1 = 0;

        for (int i = 1; i < X.Count; i++)
        {           
          //distance computation

                if ((d[i] - d[i -1]) > 0.15)
                {
                sum1 = d.Sum();
                sum = sum1 + dis1;
                Dis = Math.Round(sum, 3);
                }
            }
          // refresh the Lists when X, W and d List reach the count of 10                
    }             
    }

1 个答案:

答案 0 :(得分:1)

你完全错了。想出一个计算两个给定点的距离的方法。这将是签名double -> double -> double的功能,或者,如果您更喜欢C#,double ComputeDistance(double startPoint, double endPoint)

然后,唯一要做的就是将这样的功能应用到你得到的每一对点上。通过Linq实现这一目标的最简单,最紧凑的方法。它也可以在常规foreach中完成。

请注意,如果您最终将分离的列表合并到一个列表中,那将更加清晰。 Tuple<double, double>似乎是包括表现在内的最佳选择。