我目前正在尝试做一个基本的点击游戏,开始教自己如何做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 "这个名字在当前上下文中不存在.
你在第一条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);
}
}
你在写代码的时候一定要记住作用域的问题。你的代码不工作的原因是,检查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);
}
}
}
那是因为你在第一条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);
}
}
}