1

以下にこの数学ゲームがあります。ユーザーが正解した場合、スコアは 5 増加するはずです。ただし、常に 5 でスタックし、決して増加しません。なぜだろう?!IsPostBack 変数を宣言したので、ページの更新時以外は int のリセットを停止します。提案を歓迎します。

ここに画像の説明を入力

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class _Default : System.Web.UI.Page
{

    int score;

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            score = 0;
        }
    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        int sayi1;
        int sayi2;
        Random rnd = new Random();
        sayi1 = rnd.Next(0, 100);
        sayi2 = rnd.Next(0, 100);
        Label1.Text = sayi1.ToString();
        Label3.Text = sayi2.ToString();
    }


    protected void Button2_Click(object sender, EventArgs e)
    {
        int entry = Convert.ToInt32(TextBox1.Text);
        int number1 = Convert.ToInt32(Label1.Text);
        int number2 = Convert.ToInt32(Label3.Text);
        int total = number1 + number2;

        if (entry == total)
        {
            score += 5;
            Label5.Text = score.ToString();
        }
        else
        {
            score -= 2;
            Label5.Text = score.ToString();
        }
    }
}
4

2 に答える 2

4

から削除intします

if (!IsPostBack)
{
    int score = 0;
}

基本的に、中括弧内に新しい整数変数を定義しており、フィールドとして定義されたものを更新していません。

于 2013-09-15T18:41:42.427 に答える
2

また、使用してみてくださいstatic..

static int score;

..しかし、これはアプリケーション全体になります。

これがper-userである必要がある場合は、 a を使用しsessionて増分を保存できます。

if (Session["Score"] != null)
    Session["Score"] = ((int)Session["Score"]) + 5;
else
    Session["Score"] = 5;
于 2013-09-15T18:56:39.393 に答える