为什么当我返回变量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所有的时间?
如您所说,第一次迭代时dist
的计算值为2.236068
,小于tot
,等于5
。因为:
if (dist < tol) return idx;
返回idx
的值,即0
。
也许我不应该返回idx ?然后返回dist ?