如何停止调用方法的一部分?

时间:2015-09-07 13:13:06

标签: c# winforms

我对编码很陌生,而且我正在使用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值?

3 个答案:

答案 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 声明为静态变量。因为在静态方法中,您只能访问静态成员。