";变量“;在当前上下文中不存在

本文关键字:上下文 不存在 quot 变量 | 更新日期: 2023-09-27 18:25:03

对于C#和编程来说是非常新的。我遇到了这个问题,我真的不知道如何解决它。首先,这是代码:

它在代码的"if"部分表示random1在当前上下文中不存在。是的,我知道随机只存在于按钮点击部分中,因为它位于括号之间。该代码应该选择一个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");          
    }
}

用户应该在文本框

";变量“;在当前上下文中不存在

中写入

您已经关闭了方法并省略了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) {
        ...
    }
}

请尝试下面的代码片段。您需要在同一方法内部声明变量。

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