按钮事件C#中的添加

时间:2014-09-23 18:23:14

标签: c#

      private void button2_Click(object sender, EventArgs e)
    {
           int a,sum=0;
            a = 10;

            sum = sum + a; 
         MessageBox.Show( sum + "Sum Result");

    }

每次点击按钮,我都会得到答案10.我想存储结果。假设我点击了5次然后应该有50个。上面的代码可以让你更好地理解我想要的东西。

如果可能,其他选项我通过某种方法在按钮事件之外得到此结果。我是C#的新手,所以感觉很多问题。

2 个答案:

答案 0 :(得分:0)

正如@tnw试图告诉你的那样 - 将sum移到函数之外:

private sum = 0;
private void button2_Click(object sender, EventArgs e)
{
     sum = sum + 10; 
     MessageBox.Show( sum + "Sum Result");
}

这应该有效

解释

您遇到的问题是,每次调用此函数时,函数内声明的每个变量都会被初始化,并在退出函数时被丢弃。

使用外部的变量,你可以将它变成你的类的一个字段,只要你正在使用的实例(例如表单的实例)就会保存在内存中。

答案 1 :(得分:0)

这是因为每次调用函数时都会重新初始化sum=0;。尝试将其设置为Class中的全局变量,然后调用它。

这样,当调用函数时,sum的值不会回到0,而是从它离开的位置开始递增。

// somewhere above 
int sum = 0;

// then the function
private void button2_Click(object sender, EventArgs e)
{
   sum = sum + 10; 
   MessageBox.Show(sum + " = Sum Result");
}

..因为您没有使用ab。我删除了它们。但是,如果您在函数内部使用它们(在您尚未发布的代码中),请将它们添加回来。

每次调用该函数时,都会创建名为sum的新变量,并在函数末尾删除。因此,每次按下按钮时,sum最初的值都为 0 。添加10,总是返回10.

全局变量在类本身内声明。每次调用函数时都会重新创建函数内部的每个变量(例如这个变量),并且它将具有您提供的值。所以这是一种更好的全局写变量的方法,下次需要它的值。