计算不更新

时间:2017-08-08 15:33:56

标签: c# .net foreach

我已成功运行此语法并使用一个变量,但现在我尝试将其更改为foeach()循环并获取一系列值并将结果显示为消息框。我的语法问题是ecll始终保留传递的第一个数字的值,并且计算永远不会更新数组中的每个后续数字。

我在哪里错误地阻止了对阵列中每个后续号码的更新?

private void btnGetData_Click(object sender, EventArgs e)
{
  int start = 2;
  int end = 10;

  int[] nums = Enumerable.Range(start, end - start).ToArray();

  foreach (int n in nums)
  {  
      float tp_x = 0, tp_y = 0;

      SAP = new List<PointF>();
      float fbw = m_pd.bl[m_pd.bl.Count - 1].m_Width;
      float Location1_X = tp_x + fbw;
      float Location1_Y = tp_y;
      SAP.Add(new PointF(Location1_X, Location1_Y));

      float iBH = gbh(m_pd.bl.Count - 1);
      float lbw = m_pd.bl[0].m_Width;
      float Location2_X = tp_x + lbw;
      float Location2_Y = tp_y + (iBH) + 1.5f;

      PointF rip = new PointF();
      if (!Getrip(ftp, rhep, ref rip))
      {
        SAP = null;
        return;
      }

      for (int iRowIndex = saii; iRowIndex < m_pd.pp.Count; iRowIndex++)
      {
        float Xvalue = m_pd.pp[iRowIndex].X;
        float Yvalue = m_pd.pp[iRowIndex].Y;
        SAP.Add(new PointF(Xvalue, Yvalue));

        if (Yvalue == LeftIntersectionPoint.Y)
        {
          pp.X = Xvalue;
          pp.Y = Yvalue;
          continue;
        }

        if (Xvalue >= rip.X)
        {
          Xvalue = rip.X;
          SAP[SAP.Count - 1] = new PointF(rip.X, rip.Y);
        }

        if (Xvalue == rip.X)
        {
          break;
        }

        pp.X = Xvalue;
        pp.Y = Yvalue;
      }

      double ecll = Getll(Location1_X, Location1_Y, rip.X, rip.Y);

      Messagebox.Show(Convert.ToString(ec11));
      txtLength.Text = ll.ToString("0.00");
    }
}

1 个答案:

答案 0 :(得分:0)

'Foreach'循环中的每次迭代都为'n'分配一个新值。 但是在循环体中,该值(n)不会在计算中的任何地方使用(除非我遗漏了某些东西)。所以,当然这些计算的结果总是一样的。

只要在某些计算中包含'n',结果就会改变......