为什么当我返回变量idx时,它总是为0

本文关键字:返回 变量 idx 为什么 | 更新日期: 2023-09-27 18:16:27

在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,并对List进行索引,我看到index[0]为435.0

x = 434, y = 233Tol = 5.0

计算后:dx = 1.0而dy = -2.0

In end dist = 2.236068

且idx为0

也许我不应该返回idx ?然后返回dist ?

我把它搞砸了,我很长一段时间没有碰这段代码。我不记得它返回的是idx,可能没有dist

为什么当我返回变量idx时,它总是为0

为什么当我返回变量idx它是0所有的时间?

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

if (dist < tol) return idx;

返回idx的值,即0

也许我不应该返回idx ?然后返回dist ?