【问题标题】:Using a boolean variable with an if statement?使用带有 if 语句的布尔变量?
【发布时间】:2020-08-20 22:18:14
【问题描述】:

我目前正在尝试制作一个基本的点击游戏来开始自学如何做 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# boolean boolean-logic boolean-expression boolean-operations


    【解决方案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);
            }
        }
    }
    

    【讨论】:

      【解决方案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);
              }
          }
      }
      

      【讨论】:

      • 谢谢你们俩,我先试试第一个然后第二个,我很感激!
      【解决方案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);
              }
          }
      

      【讨论】:

        猜你喜欢
        • 2023-01-19
        • 2014-02-16
        • 1970-01-01
        • 1970-01-01
        • 2018-02-01
        • 2017-05-12
        • 2014-02-02
        • 1970-01-01
        • 2013-03-26
        相关资源
        最近更新 更多