首页 > 解决方案 > C# 不识别变量

问题描述

我正在尝试与 void 目标中生成的 p 值进行比较,我aim()在计时器内运行该函数,但是当涉及到if (score>p)它时它无法识别P变量,我该如何使其使 if 语句起作用,它在哪里进行比较P在目标函数中生成的值。

void aim()
{
    int p;
    p = n.Next(2, 5);
    OppScore.Text = (string.Format("Target Score: {0}", p));
}

Random m = new Random();
Random n = new Random();

public void RunTimer_Tick(object sender, EventArgs e )
{
    target();

    if (lives <= 0)
    {
        left--;
        lives = 2;
        TimesLeft.Text = (string.Format("attempts left: {0}", left));
        TimesLeft.Text = Convert.ToString(left);
    }

    if (left <= 0)
    {
        this.Hide();
        new Game_Over().Show();
        RunTimer.Stop();
    }

    if (counter<1)
    {
        aim();
        counter++;
    }

    if (score > p)
    {
        this.Hide();
        new Winner().Show();
        RunTimer.Stop();
    }
}

标签: c#function

解决方案


刘易斯,

正如所有人在评论中所说,您已经在本地初始化了“p”变量。

RunTimer_Tick(...)

不同于aim(...) 所以如果你想让它工作那么你必须将变量'p'全局放置,以便它的值将保留在整个程序中,而不仅仅是将它用作局部变量。

我希望你明白我们想说的话。


推荐阅读