在具有更大范围的方法中实例化类

时间:2016-03-02 02:18:23

标签: c# class scope

所以我正在制作一个小型ESL炸弹游戏,但我想制作更高效的代码集。截至目前我有这个:

 public partial class Form2 : Form
{
    string pinNumber;
    Bomb bombA = new Bomb("A", 1, "A", 1, "A", "B", "C", "D", "Sentence");
    int progress;
    int wireChoice;
    string ansChoice;
    int timer = 600;

    public Form2()
    {
        InitializeComponent();
        timer1.Start();

        Random _bombType = new Random();
        int bombType = 1;

        if (bombType == 1)
        {
            genBomb();
        }
        else
        {

        }

    }

    public void genBomb()
    {
        bombA.Pin = 6259;
        bombA.Serial = "G6P4LN";
        bombA.Wire = 2;
        bombA.Code = "to rearrange";
        bombA.Choice1 = "rearrange";
        bombA.Choice2 = "to rearrange";
        bombA.Choice3 = "rearranged";
        bombA.Choice4 = "rearranging";
        bombA.Question = "I purchased so many new outfits that I need ______ my closet.";
        uiUpdate();
    }

public void uiUpdate()
    {
        serialLbl.Text = bombA.Serial;
        puzzleLbl.Text = bombA.Question;
        ans1.Text = bombA.Choice1;
        ans2.Text = bombA.Choice2;
        ans3.Text = bombA.Choice3;
        ans4.Text = bombA.Choice4;
        timerLbl.Text = timer.ToString();
    }

我有一个带有公共变量的Bomb类的单独公共类文件。但是,我必须在Form2字段中实例化bombA并在方法genBomb()中重新定义其变量值。

我想在该方法中创建bombA,但这样做会导致其他引用bombA.Variable的方法无法运行,因为它们不再存在于该上下文中。

我该如何做到这一点?

1 个答案:

答案 0 :(得分:0)

范围是在变量或成员声明时定义的,不一定是在创建对象时。您可以在不给它值的情况下声明该字段:

Bomb bombA;

并在genBomb中初始化:

public void genBomb()
{

    bombA = new Bomb("A", 1, "A", 1, "A", "B", "C", "D", "Sentence");

    bombA.Pin = 6259;
    ....

请注意,您需要在null中检查uiUpdate值,因为在genBomb之前无法阻止它被调用。