2016-03-02 44 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,否則你會得到一個空引用異常。 –