如何将函数中使用的变量用于该函数之外的某些内容?

时间:2014-06-06 03:18:34

标签: c# variables

我在某种程度上是C#的初学者,基本上我试图制作一个简单的程序,让你点击按钮随机化你的角色的种族和阶级。令人惊讶的是,实际设置随机数发生器并不是问题所在。我成功地创建了程序但是为了使它更复杂,我添加了一个显示该随机化示例的图片框。基本上我把它设置成这样:

private void button1_Click(object sender, EventArgs e)
    {
        var r = new Random();
        var classText = r.Next(1, 7);
        if (classText == 1)
        {
            textBox1.Text = "Mage";
        }
        else if (classText == 2)
        {
            textBox1.Text = "Rogue";
        }
        else if (classText == 3)
        {
            textBox1.Text = "Ranger";
        }
    }

    private void button2_Click_1(object sender, EventArgs e)
    {
        var r2 = new Random();
        var raceText = r2.Next(1, 10);
        if (raceText == 1)
        {
            textBox2.Text = "Human";
        }
        else if (raceText == 2)
        {
            textBox2.Text = "Dwarf";
        }
        else if (raceText == 3)
        {
            textBox2.Text = "Elf";
        }
    }

    if(classText == 1 && raceText == 1)
    {
        pictureBox2.ImageLocation = whatever;
    }
    else if (classText == 1 && raceText == 2)
    {
        textBox2.Text = "Elf";
    }
    else if (classText == 2 && raceText == 3)
    {
        pictureBox2.ImageLocation = whatever;
    }
    etc........

然而,最后一个if语句不起作用,因为我使用的变量在各自的函数之外是不可访问的。我需要一种能够在if语句中使用这些变量的方法,以便我可以告诉它放在哪个图片中。无论如何回归'像python中的变量或者有更好的方法吗?

1 个答案:

答案 0 :(得分:2)

这完全是关于范围的,你应该阅读一下。基本上,变量仅存在于其声明的块内。如果在方法中声明变量,那么它只存在于该方法中。如果您希望能够在方法之外使用变量,则必须在该方法之外声明它。如果你想在多个方法中使用相同的变量,那么它必须在所有方法之外声明,即在类级别。