2015-09-07 27 views
0

我對編碼非常陌生,我使用C#創建測驗,但是當正確回答答案時嘗試增加總分時遇到了問題。調用該方法的代碼是:如何停止正在調用的方法的一部分?

private void nextQuestionButton1_Click(object sender, EventArgs e) 
    { 
     if (majNugentRadioButton.Checked) 
     { 
      // increment total score 
      Program.Score(); 
      // load question 2 
      Question2 win2 = new Question2(); 
      win2.Show(); 
      this.Close(); 
     } 
     else 
     { 
      // load question 2 
      Question2 win2 = new Question2(); 
      win2.Show(); 
      this.Close(); 
     } 
    } 
} 

而Program.Score()的代碼;方法是:

static public void Score() 
    { 
     int totalScore = 0; 
     totalScore++; 
    } 

當我從第二個問題這臺totalScore回0,我怎樣才能得到它,使它只在第一次它被稱爲分配的0值調用這個方法?

+2

'totalScore'在本地作用於'Score()'方法,這意味着它只存在於此方法中。基本上它會創建一個新變量,將其賦值爲0,將其加1,然後丟棄該變量。 –

+0

聲明你的totalScore變量爲靜態 – Piters

回答

2

如果你的分數的方法是在你的程序類,你應該建立在程序類的靜態TotalScore:

public static class Program 
{ 
    private static int TotalScore; 

    static public void Score() 
    { 
     TotalScore++; 
    } 
    //... Other stuff 
} 

在您的實現很明顯,每次調用Program.Score(),局部變量在評分方法格紋圖案爲0,然後++

重要:

請記住,靜態方法只能訪問靜態成員,所以你應該申報TotalScore爲靜態的。

+0

謝謝你Reza,我知道這會很簡單。 –

1

每次調用該方法得分(時間)要創建一個名爲totalScore新的變量,並分配給它的0

的值來解決這個聲明的分數()方法的範圍,因此外totalScore變量每次不分配值0,你呼叫分數()

int totalScore = 0; 

static public void Score() 
{ 
    totalScore++; 
} 
+0

我的錯誤...錯過了它是靜止的 – JdeC

0

聲明分數()方法之外的TotalScore變量。如果你聲明的方法中,當它被調用,TotalScore的值指定爲0。

然後聲明TotalScore靜態變量。因爲在靜態方法中,你只能訪問靜態成員。

相關問題