Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在运行时更改int值_C#_Visual Studio 2010_Coding Style - Fatal编程技术网

C# 在运行时更改int值

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

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

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,并将整数传递到所需的表单。您可以使用属性设置变量的值或将其作为引用传递。