"变量"在当前背景下不存在

时间:2015-11-30 21:32:01

标签: c# xaml

C#和一般编程都很新。我遇到了这个问题,我真的不知道如何解决它。首先,这里是代码:

它在" if" random1在当前上下文中不存在的代码的一部分。是的,我知道随机只存在于Button_click部分中,因为它位于括号之间。该代码应该选择0到20之间的随机数而不显示它,以便用户必须猜测它。如果用户输入错误,则会显示提示,说明数字是太高还是太低。我该如何解决这个问题?感谢

编辑:看起来我太模糊了,但你的答案很好。这是完整的代码:

public void Button_Click(object sender, RoutedEventArgs e) //random
{
    Random chiffrealeatoire = new Random();
    int random1 = (chiffrealeatoire.Next(0, 20));
}

private void Button_Click_1(object sender, RoutedEventArgs e) //quit
{
    Application.Current.Shutdown();
}

private void Button_Click_2(object sender, RoutedEventArgs e) //veri
{

}

public void TextBox_TextChanged(object sender, TextChangedEventArgs e)
{
    if (BoiteChiffre.Text < random1)
    {
        MessageBox.Show("Too low");
    }
    if (BoiteChiffre.Text > random1)
    {
        MessageBox.Show("Too high");
    }
    else
    {
        MessageBox.Show("Congratulations");          
    }
}

用户应该在文本框中书写

2 个答案:

答案 0 :(得分:3)

你已经关闭了你的方法并省略了if语句! random1变量在您的方法中定义和声明,因此它不存在于其外部。请移动方法的结束括号以包含if语句。

此外,您的两个if语句应该与else if链接在一起。您已经声明了两个单独的if语句,因此只有其中一个将具有else。没错,只需更好地练习以下内容。

基本结构:

public void Button_Click(object sender, RoutedEventArgs e) {

    ...
    int random1

    if(<random1) {
        random1
    } else if(>random1) {
        ...
    } else {
        ...
    }

} // <- method closing bracket

编辑:由于您已严格修改了所提供的代码,因此我必须更新我的解释。

您的问题与变量范围有关。方法中定义的变量具有该方法的局部范围。它无法访问,甚至不存在于其之外。您应该在所有方法中声明您的方法,以便您可以使用多种方法。

基本结构:

int random1

public void methodA() {
    random1 = whatever
}

public void methodB() {
    if(random1) {
        ...
    }
}

答案 1 :(得分:0)

请尝试以下代码段。您需要在同一方法中声明变量。

public void Button_Click(object sender, RoutedEventArgs e) //random
{
    Random chiffrealeatoire = new Random();
    int random1 = (chiffrealeatoire.Next(0, 20));

    if (BoiteChiffre.Text < random1)
    {
        MessageBox.Show("Too low");
    }
    if (BoiteChiffre.Text > random1)
    {
        MessageBox.Show("Too high");
    }
    else
    {
        MessageBox.Show("Congratulations");          
    }
}