运行时计算

本文关键字:计算 运行时 | 更新日期: 2023-09-27 18:14:35

我在Windows窗体应用程序工作。我有三个按钮。我写了一个方法,计算每个按钮的新位置。但是我有一些错误(在代码之后解释)。方法是:

    Random random = new Random();
    public int SetPointLocation()
    {
        int x1 = x2 - 20;
        int x2;
        int x3 = x2 + 20;

        int y1 = y2 - 1;
        int y2 = random.Next(0, 2);
        int y3 = y2 + 1;
        return x2 = (((x3 - x1) * (y2 - y1)) / y3 - y1) + x1;
    }
我得到的错误:

不能在声明局部变量'x2'之前使用它。

不能在声明局部变量'y2'之前使用它。

所以我重新安排了方法的块:

    Random random = new Random();
    public int SetPointLocation()
    {
        int x2;
        int x1 = x2 - 20;
        int x3 = x2 + 20;
        int y2 = Convert.ToInt32((picBox.Name).Remove(0, 10));
        int y1 = y2 - 1;
        int y3 = y2 + 1;
        return x2 = (((x3 - x1) * (y2 - y1)) / y3 - y1) + x1;
    }

现在我得到的错误:

"使用未赋值的局部变量'x2'".

我使用的公式是从频率表"统计"中找到中位数的方法。但是'x2'是未知的,我想在运行时计算它,但是因为'x2'没有值,我不能设置'x1'和'x3'。这个问题的解决方案是什么?

运行时计算

直接使用

int x2 = 0;

任何东西在使用之前都需要初始化。这是语言的要求。

不太接近,但无论如何击中它:SO.

听起来你真的只是想传递x2作为一个参数。当你知道x2应该是多少时,你可以调用这个函数。

Random random = new Random();
public int SetPointLocation(int x2)
{
    int x1 = x2 - 20;
    int x3 = x2 + 20;
    int y2 = Convert.ToInt32((picBox.Name).Remove(0, 10));
    int y1 = y2 - 1;
    int y3 = y2 + 1;
    // Just return what x2 needs to be
    return (((x3 - x1) * (y2 - y1)) / y3 - y1) + x1;
}

x2在使用前未设置

Random random = new Random();
public int SetPointLocation()
{
    int x2;   // <- here' the problem
    int x1 = x2 - 20;
...

x2赋一个值:

x2 = 123;
c#中不允许使用未初始化的变量

编译器会告诉你错误在哪里