在运行时更改int值

时间:2012-12-01 18:16:29

标签: c# visual-studio-2010 coding-style

我有一个带有一些构造函数的类,一个带有命令按钮的表单和一个在我的“form.cs”中设置为20的公共变量。每次点击按钮直到它变为零,我怎么能减少变量?我尝试了一些方法,比如click事件中的循环,构造函数中的简单演绎(变量=变量-1),但它们不起作用! 试过这个:

public void AssignSeat()
{
   seats = seats - 1;    
}

然后

private void button2_Click(object sender, EventArgs e)
{
    Class1 Class1 = new Class1();
    Class1.AssignSeat();
    Class1.MSGbox();                     
}

它编译并运行没有错误但它永远不会停止!

4 个答案:

答案 0 :(得分:4)

下面:

Class1 Class1 = new Class1();
Class1.AssignSeat();
Class1.MSGbox();

...每次点击按钮时,您都会创建Class1实例。 button2_click方法是否已在Class1范围内?如果是这样,您只需要调用AssignSeat - 您不需要创建表单的新实例。

(我也强烈建议反对公共变量,但这是另一回事。)

答案 1 :(得分:0)

每次单击按钮时,您正在构建Class1的新实例,然后减少这个新创建的实例的席位,一旦方法结束,它就会被销毁。
只需在表单中包含一个类型为Class1的私有变量(在表单中调用它的结构符号)并使用它:

public partial class Form1: Form {
    private Class1 _class1 = new Class1();

    private void button2_Click(object sender, EventArgs e) {
        _class1.AssignSeat();
        _class1.MSGbox();   
    }
}

答案 2 :(得分:0)

虽然每次单击按钮时都在创建新对象,但要解决问题,请将seats设为静态。

这是一个糟糕的设计,正如@JonSkeet所说

答案 3 :(得分:0)

  1. 如果是,则两个方法都在同一个类中,那么您不需要为Class1创建一个对象来访问它。
  2. 每次单击按钮时,变量都设置为20.
  3. 根据您所写的内容,您每次都在创建一个新实例,所以您的问题就出现了。
  4. 宣布iCount&外部按钮点击iTemp

    int iCount = 0; int iTemp = 20;

        private void button2_Click(object sender, EventArgs e)
        {
            if (iCount == 0)
            {
                iTemp = 20;
                iCount++;
            }
            iTemp = iTemp - 1;
            MessageBox.Show(iTemp.ToString());
        }
    }