我对编码很陌生,而且我正在使用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值?
答案 0 :(得分:2)
如果您的分数方法在您的计划类中,您应该在程序类中创建静态TotalScore:
public static class Program
{
private static int TotalScore;
static public void Score()
{
TotalScore++;
}
//... Other stuff
}
在您的实现中,显而易见的是,每次调用Program.Score()时,Score方法中的局部变量都会设置为0,然后是++
重要提示:
请记住,静态方法只能访问静态成员,因此您应该将TotalScore声明为静态。
答案 1 :(得分:1)
每次调用方法Score()时,您都会创建一个名为totalScore的新变量,并为其赋值0
解决这个问题,将totalScore变量声明在Score()方法的范围之外,因此每次调用Score()时都不会将值赋值为0
//default binding
fn() ~ fn.call(window)
// the default binding of this, is window, or undefined in strict mode.
答案 2 :(得分:0)
在 Score()方法之外声明 TotalScore 变量。如果在方法内部声明,则在调用时,将TotalScore的值指定为0.
然后将 TotalScore 声明为静态变量。因为在静态方法中,您只能访问静态成员。