使用带有 if 语句的布尔变量?

Using a boolean variable with an if statement?

提问人:IKU Brontide 提问时间:5/6/2020 更新时间:5/6/2020 访问量:1210

问:

我目前正在尝试制作一个基本的点击器游戏,开始自学如何做 C#,我已经能够解决这部分的大多数问题,但还没有。对,不是,我正在编写一个可购买的升级,该升级可以自行赚钱,我想我已经失败了,但是其中一个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# 值 布尔逻辑 表达式 布尔值运算

评论


答:

1赞 RmD 5/6/2020 #1

在编写代码时,您必须记住作用域。您的代码不起作用的原因是,if 语句检查 upgrade1 是否为 true,甚至不知道变量 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赞 qqqqqkks 5/6/2020 #2

这是因为您在第一个 if 语句中定义了 upgrade1,因此第二个语句无法访问它。

将代码更改为:

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);
        }
    }
}

评论

1赞 IKU Brontide 5/6/2020
谢谢你们俩,先试第一个,然后试第二个,我很感激!
2赞 Rhday Parikh 5/6/2020 #3

您已在第一个 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);
        }
    }