2016-03-02 42 views
0

因此,我正在制作一个小型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(); 
    } 

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

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

我该如何做到这一点?

回答

0

范围是在变量或成员为时声明为而定义的,不一定当您创建对象时。在genBomb

Bomb bombA; 

并初始化它:你可以声明栏没有给它的值

public void genBomb() 
{ 

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

    bombA.Pin = 6259; 
    .... 

请注意,您需要在uiUpdate来检查null值,因为没有什么阻止它被称为genBomb之前。

+0

谢谢!作为初学者,我从未明确知道范围是用声明定义的,并且总是可以在以后定义。我感谢帮助!虽然我不知道如何去添加空检查。如果仅在声明了bombA值后才调用uiUpdate(),将如何调用uiUpdate? – Arcaster

+0

我的意思是,如果你需要在尝试访问它的属性或方法之前加上'if(bombA = null)'来查看'bombA'是否为null,否则你会得到一个空引用异常。 –