在if语句中使用布尔变量?

问题描述 投票:0回答:3

我目前正在尝试做一个基本的点击游戏,开始教自己如何做C#,我已经能够解决这部分的大部分问题,但还没有。右不我正在编程一个可购买的升级,产生的钱对它自己,我想我得到了下来,但theres一个错误的if语句,我不知道如何解决它。有人知道我做错了什么吗?

代码。

    private int a = 0;
    private void flatButton1_Click(object sender, EventArgs e)
    {
        a++;
        flatTextBox1.Text = a.ToString($"Knowledge: {a}");
    }

    private void flatButton2_Click(object sender, EventArgs e)
    {
        if (a >= 50)
        {
            bool upgrade1 = true;
        }
        if (upgrade1 == true)
        {
            for ( ; ; )
            {
               a = a + (a++ * 2);
            }
        }

唯一出错的是if(upgrade1 = true), upgrade1是个错误, 它说 "Upgrade1 "这个名字在当前上下文中不存在.

c# boolean boolean-logic boolean-expression boolean-operations
3个回答
2
投票

你在第一条IF语句的范围内声明了变量 "upgrade1",所以它只能在该IF语句中使用。你需要全局声明 "upgrade1 "变量。(在IF语句之外

 private int a = 0;
private void flatButton1_Click(object sender, EventArgs e)
{
    a++;
    flatTextBox1.Text = a.ToString($"Knowledge: {a}");
}

private void flatButton2_Click(object sender, EventArgs e)
{
    bool upgrade1 =false;
    if (a >= 50)
    {
       upgrade1 = true;
    }
    if (upgrade1 == true)
    {
        for ( ; ; )
        {
           a = a + (a++ * 2);
        }
    }

1
投票

你在写代码的时候一定要记住作用域的问题。你的代码不工作的原因是,检查if语句检查是否upgrade1为真时,根本不知道变量upgrade1的存在。你必须把变量定义移出一个作用域,这样if语句检查才知道你在说什么。希望这能帮助你

这应该可以解决你的问题。

private void flatButton2_Click(object sender, EventArgs e)
{
    bool upgrade1;
    if (a >= 50)
    {
        upgrade1 = true;
    }
    else
    {
        upgrade1 = false;
    }
    if (upgrade1 == true)
    {
        for ( ; ; )
        {
           a = a + (a++ * 2);
        }
    }
}

1
投票

那是因为你在第一条if语句中定义了upgrade1 所以你的第二条if语句无法到达它。

把你的代码改成这样。

private int a = 0;
private void flatButton1_Click(object sender, EventArgs e)
{
    a++;
    flatTextBox1.Text = a.ToString($"Knowledge: {a}");
}

private void flatButton2_Click(object sender, EventArgs e)
{
    bool upgrade1;
    if (a >= 50)
    {
       upgrade1 = true;
    }
    if (upgrade1 == true)
    {
        for ( ; ; )
        {
           a = a + (a++ * 2);
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.