为什么当我返回变量idx时它始终为0?

时间:2013-06-01 12:09:49

标签: c# winforms

在Form1中我有这段代码:

private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                label1.Visible = true;
                label4.Visible = true;
                if (wireObject1 != null)
                    float t = wireObject1.GetIndexByXY(e.X, e.Y, 5);

然后在WireObject类中,我有了这个功能:

public float GetIndexByXY( int x , int y , float tol)
        {
            for (idx = 0; idx < woc.Point_X.Count; idx++)//++idx)
            {
                float dx = woc.Point_X[idx] - x;
                float dy = woc.Point_Y[idx] - y;
                float dist = (float)Math.Sqrt(dx * dx + dy * dy);

                if (dist < tol) return idx;
            }
            return -1;
        }

idx是在类顶部声明的浮点变量。 对于这种情况下的示例:

woc.Point_X.Count为1且indiex列表我看到索引[0]是435.0

x = 434且y = 233 tol = 5.0

计算后:dx = 1.0 并且dy = -2.0

最后dist = 2.236068

且idx为0

所以也许我不应该返回idx?可能会回来吗?

我搞砸了很久没碰到这段代码了。我不记得白衣它正在返回idx,也许没有dist。

1 个答案:

答案 0 :(得分:1)

  

为什么当我返回变量idx时它始终为0?

正如您所说,第一次迭代的dist计算值为2.236068,小于tot,等于5。因为:

if (dist < tol) return idx;

返回idx的值0

  

所以也许我不应该返回idx?可能会回来吗?

这取决于你想要达到的目标。