C# 在运行时更改int值
我有一个带有一些构造函数的类,一个带有命令按钮的表单,一个公共变量在我的“form.cs”中设置为20。如何在每次单击按钮时减小变量,直到它变为零?我尝试了一些方法,比如在click事件中使用循环,在构造函数中使用一个简单的推断(variable=variable-1),但是它们不起作用! 我试过这个:C# 在运行时更改int值,c#,visual-studio-2010,coding-style,C#,Visual Studio 2010,Coding Style,我有一个带有一些构造函数的类,一个带有命令按钮的表单,一个公共变量在我的“form.cs”中设置为20。如何在每次单击按钮时减小变量,直到它变为零?我尝试了一些方法,比如在click事件中使用循环,在构造函数中使用一个简单的推断(variable=variable-1),但是它们不起作用! 我试过这个: public void AssignSeat() { seats = seats - 1; } 然后 private void button2_Click(object send
public void AssignSeat()
{
seats = seats - 1;
}
然后
private void button2_Click(object sender, EventArgs e)
{
Class1 Class1 = new Class1();
Class1.AssignSeat();
Class1.MSGbox();
}
它编译并运行时没有错误,但它从不停止 这里:
Class1 Class1 = new Class1();
Class1.AssignSeat();
Class1.MSGbox();
。。。每次单击按钮时,您都在创建Class1
的新实例。按钮2\u click
方法是否已在Class1
中?如果是这样,您只需要调用AssignSeat
——不需要创建表单的新实例
(我也强烈建议不要使用公共变量,但那是另一回事。)这里:
Class1 Class1 = new Class1();
Class1.AssignSeat();
Class1.MSGbox();
。。。每次单击按钮时,您都在创建Class1
的新实例。按钮2\u click
方法是否已在Class1
中?如果是这样,您只需要调用AssignSeat
——不需要创建表单的新实例
(我也强烈建议不要使用公共变量,但那是另一回事。)每次单击按钮时,您都在构建一个新的Class1实例,然后减少这个新创建的实例的席位,该实例在方法结束后会立即被销毁。
只需在表单中使用Class1类型的私有变量(在表单的构造函数中调用它的构造函数),并使用该变量:
public partial class Form1: Form {
private Class1 _class1 = new Class1();
private void button2_Click(object sender, EventArgs e) {
_class1.AssignSeat();
_class1.MSGbox();
}
}
每次单击按钮时,您都在构建Class1的一个新实例,然后减少这个新创建的实例的席位,该实例在方法结束时将被销毁。
只需在表单中使用Class1类型的私有变量(在表单的构造函数中调用它的构造函数),并使用该变量:
public partial class Form1: Form {
private Class1 _class1 = new Class1();
private void button2_Click(object sender, EventArgs e) {
_class1.AssignSeat();
_class1.MSGbox();
}
}
尽管每次单击按钮时都会创建一个新对象,但要解决问题,请将
座椅设置为静态
这是一个糟糕的设计,正如@JonSkeet所说的尽管每次单击按钮时都会创建一个新对象,但要解决问题,请将座椅设置为静态
正如@JonSkeet所说,这是一个糟糕的设计
这两个方法是否在同一个类中?如果是,则不需要为Class1创建对象来访问它
每次单击按钮时,变量设置为20
根据您编写的内容,您每次都在创建一个新实例,因此您的问题就出现了
声明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());
}
}
这两个方法是否在同一个类中?如果是,则不需要为Class1创建对象来访问它
每次单击按钮时,变量设置为20
根据您编写的内容,您每次都在创建一个新实例,因此您的问题就出现了
声明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());
}
}
“永不停止”是什么意思?如果单击该按钮,它将创建一个新类并调用AssignSeat。如果您再次单击它,它将创建一个新的INSTANCE“它永不停止”是什么意思?如果单击该按钮,它将创建一个新类并调用AssignSeat。如果您再次单击它,它将创建一个新的INSTANCONO,而不是在Class1中。好像我完全错了,我刚开始学C。不,它不在1班之内。看来我完全错了,我刚开始写C。这个答案解决了我的问题,但又出现了一个新的答案。这是绝对好的,但当我改变形式,我回到这一个项目P被分配到一个值20再次,我不想发生!我想我应该在Form1中声明iTemp,这是我运行程序时出现的第一个表单?我一共有3个表单,form1是出现的第一个表单,它有两个命令按钮,我选择form1或form2。您应该在form1中声明iTemp,并将整数传递到所需的表单。您可以使用属性设置变量的值或将其作为引用传递。这个答案解决了我的问题,但出现了一个新的问题。这是绝对好的,但当我改变形式,我回到这一个项目P被分配到一个值20再次,我不想发生!我想我应该在Form1中声明iTemp,这是我运行程序时出现的第一个表单?我一共有3个表单,form1是出现的第一个表单,它有两个命令按钮,我选择form1或form2。您应该在form1中声明iTemp,并将整数传递到所需的表单。您可以使用属性设置变量的值或将其作为引用传递。