静态Int不从0开始

时间:2013-08-26 13:28:22

标签: c#

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

    static int numberOfBeachBookingInteger = 0;
    static int numberOfBushBookingInteger = 0;
    static int totalRevenueInteger = 0;


  protected void Page_Load(object sender, EventArgs e)
    {

        if (!IsPostBack)
        {
            if (Session["beachBach"] != null)
            {
                numberOfBeachBookingInteger += 1;
                beachBachLabel.Text = numberOfBeachBookingInteger.ToString();
            }
            if (Session["beachBach"] != null)
            {
                numberOfBushBookingInteger += 1;
                bushBachLabel.Text = numberOfBushBookingInteger.ToString();
            }
        }
    }

嗨,我希望在调试程序时看到这些整数从“0”开始。但是,我分配给这些整数的这些标签总是从'1'

开始

请帮忙!

5 个答案:

答案 0 :(得分:5)

在将数字写入标签之前,您总是递增它们:

numberOfBeachBookingInteger += 1;

当然,标签中的值永远不会为0.

答案 1 :(得分:3)

切换这些行的顺序

numberOfBeachBookingInteger += 1;
beachBachLabel.Text = numberOfBeachBookingInteger.ToString();

在显示之前你会增加它。你想要的是:

if (Session["beachBach"] != null)
{
    beachBachLabel.Text = numberOfBeachBookingInteger.ToString();
    numberOfBeachBookingInteger += 1;
}
if (Session["beachBach"] != null)
{
    bushBachLabel.Text = numberOfBushBookingInteger.ToString();
    numberOfBushBookingInteger += 1;
}

答案 2 :(得分:2)

您是否意识到静态变量在一个ASP.NET进程中的所有会话中共享?这意味着,如果两个用户访问该站点,他们将两个增加静态变量(对于每个用户,它们不一定是连续的)?

那就是说,你可以尝试在创建标签后增加值

if (Session["beachBach"] != null)
{
    bushBachLabel.Text = numberOfBushBookingInteger.ToString();
    numberOfBushBookingInteger += 1;
}

答案 3 :(得分:0)

据我所知,您在首次显示整数之前已经添加了1

numberOfBeachBookingInteger += 1;
beachBachLabel.Text = numberOfBeachBookingInteger.ToString();

您可以将整数定义为-1,它们应显示为0

static int numberOfBeachBookingInteger = -1;
static int numberOfBushBookingInteger = -1;

或者,将您的逻辑转为

beachBachLabel.Text = numberOfBeachBookingInteger.ToString();
numberOfBeachBookingInteger += 1;

也带来了预期的效果。

答案 4 :(得分:0)

if (Session["beachBach"] != null)
{
  beachBachLabel.Text = (numberOfBeachBookingInteger++).ToString();
}